4

を使用してawk、ファイルの最後の一致行を印刷したいと思います。行の範囲ではなく、一致する行自体のみが必要です。このようなコマンドを使用できます

awk '/foo/' bar.txt

ただし、これは最後の行だけでなく、一致するすべての行を出力します。

4

5 に答える 5

29

値を変数に保存し、ファイル全体を処理した後に出力できます。

awk '/foo/ {a=$0} END{print a}' file

テスト

$ cat file
foo1
foo2
foo3
4
5
$ awk '/foo/ {a=$0} END{print a}' file
foo3
于 2013-06-25T13:07:49.240 に答える
5

ファイルを反転し、最初の一致を見つけます。

tac file | awk '/foo/ {print; exit}'
于 2013-06-25T13:09:28.063 に答える
5

このコマンドを使用すると、入力ストリームtailの最後の行を取得できます。最後の行を除くすべてを削除するために、出力をnパイプすることができます:awktail

awk '/foo/' bar.txt | tail -1
于 2013-06-25T13:04:59.210 に答える
1

変数に値を割り当て、行とその番号の両方の処理の最後にそれらを出力できます。

ファイル:

$ cat file
foo1
foo2
foo3
4
5

指示:

$ awk '/foo/ {a=$0;n=NR} END{print n, a}' file
3 foo3
于 2021-01-13T22:37:59.003 に答える