各行の最後の要素を印刷する

各行の最後の要素を印刷する

ファイルの最後のタブの後に要素を印刷するには?

例: ファイル 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

関連情報