如何在 Bash 中用「cut」定義「製表符」分隔符號?

如何在 Bash 中用「cut」定義「製表符」分隔符號?

cut以下是使用空格分隔符號將輸入分解為欄位並取得第二個欄位的範例:

cut -f2 -d' '

如何將分隔符號定義為製表符而不是空格?

答案1

兩種方式:

Ctrl+ V,然後Tab使用“逐字記錄”引用插入

cut -f2 -d'   ' infile

或像這樣寫來使用ANSI-C 引用

cut -f2 -d$'\t' infile

引號的形式$'...'不是 POSIX shell 語言的一部分(還沒有),但除了 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}" 
}

相關內容