cut
以下は、スペース区切り文字を使用して入力をフィールドに分割し、2 番目のフィールドを取得する例です。
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
これは、入力の各行の 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}"
}