Bashで「カット」を使用して「タブ」区切り文字を定義する方法は?

Bashで「カット」を使用して「タブ」区切り文字を定義する方法は?

cut以下は、入力をフィールドに分割し、2番目のフィールドを取得するためにスペース区切り文字を使用する例です。

cut -f2 -d' '

区切り文字をスペースの代わりにタブとして定義するにはどうすればよいですか?

答え1

2つの方法:

Ctrl+を押してVerbatimを使用してくださいVTab参照の挿入

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

これにより、各入力行の2番目のタブで区切られたフィールドが抽出されます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}" 
}

関連情報