
ファイルの最後のタブの後に要素を印刷するには?
例: ファイル 1
A 3 8 6 7
B 4 6 2 3 6 8
c 1 9
次を返します。
7
8
9
答え1
NF
この変数を賢く使うことができますawk
awk '{print $NF}' File1
~からman awk
核因子 現在の入力レコードのフィールド数。
したがって、NF
フィールド数が与えられ、印刷ステートメントで使用可能なフィールド$NF
に拡張されます。$3
答え2
最初のフィールドと最後のフィールドの代わりに最後のフィールドだけが必要な場合は、次のことを試すことができます。
rev file | cut -f 1
rev
ファイルの各行を反転し、cut
最初のフィールドのみを印刷します(フィールドはデフォルトでタブとして定義されています)。行が反転したので、最初のフィールドは元の最後のフィールドです。
上記のコードは与えられた例で動作しますが、@Bernhardが以下で指摘したように、逆方向の単一文字よりも長いフィールドを印刷します。この場合、2番目のリビジョンが必要です。
rev file | cut -f 1 | rev
答え3
sed
次のタスクを使用できます。
sed 's/.* //' file # where ' ' -- is your delimiter
区切り記号の前のすべての記号が削除されます。ファイルがタブで区切られている場合は、以下を使用してください。
sed 's/.*\t//' file
答え4
awk
実際には作業のためのツールですが、完全性のためにここにGNUgrep
方式があります。
grep -oE '[^[:space:]]+$' file
7
8
9