Bash에서 "cut"을 사용하여 "탭" 구분 기호를 정의하는 방법은 무엇입니까?

Bash에서 "cut"을 사용하여 "탭" 구분 기호를 정의하는 방법은 무엇입니까?

cut다음은 입력을 필드로 나누고 두 번째 필드를 가져오기 위해 공백 구분 기호를 사용하는 예입니다.

cut -f2 -d' '

구분 기호를 공백 대신 탭으로 정의하려면 어떻게 해야 합니까?

답변1

두 가지 방법:

Ctrl+를 누르고 Verbatim을 사용하십시오 V.Tab참조 삽입.

cut -f2 -d'   ' infile

아니면 이렇게 써서 사용하세요ANSI-C 인용문:

cut -f2 -d$'\t' infile

따옴표 형식 $'...'은 POSIX 쉘 언어(아직 아님), 그러나 Bash 외에도 최소한 ksh, mksh, zsh 및 Busybox에서도 작동합니다.

답변2

탭이 기본값입니다.

보다컷 매뉴얼 페이지.

-d delim
         Use delim as the field delimiter character instead of the tab
         character.

그래서 당신은 쓸 수 있습니다

cut -f 2

답변3

awk -F '\t' '{ print $2 }' inputfile

그러면 각 입력 줄의 두 번째 탭으로 구분된 필드가 추출됩니다 inputfile.

답변4

또는 cut을 함수로 래핑할 수도 있습니다.

function getColumns ()
{
    local -r delimiter="${1:?}"
    local -r columns="${2:?}"

    if [[ "$delimiter" == '\t' || "$delimter" == "tab" ]]; then
        cut "--fields=${columns}"
        return
    fi

    cut "--delimiter=${delimiter}" "--fields=${columns}" 
}

관련 정보