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

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

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

cut -f2 -d' '

구분 기호를 공백이 아닌 탭으로 어떻게 정의할 수 있나요?

답변1

두 가지 방법:

Ctrl+를 누른 V다음 Tab"verbatim"을 사용하려면인용 삽입.

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}" 
}

관련 정보