を使用してawk
、ファイルの最後の一致行を印刷したいと思います。行の範囲ではなく、一致する行自体のみが必要です。このようなコマンドを使用できます
awk '/foo/' bar.txt
ただし、これは最後の行だけでなく、一致するすべての行を出力します。
値を変数に保存し、ファイル全体を処理した後に出力できます。
awk '/foo/ {a=$0} END{print a}' file
$ cat file
foo1
foo2
foo3
4
5
$ awk '/foo/ {a=$0} END{print a}' file
foo3
ファイルを反転し、最初の一致を見つけます。
tac file | awk '/foo/ {print; exit}'
このコマンドを使用すると、入力ストリームtail
の最後の行を取得できます。最後の行を除くすべてを削除するために、出力をn
パイプすることができます:awk
tail
awk '/foo/' bar.txt | tail -1
変数に値を割り当て、行とその番号の両方の処理の最後にそれらを出力できます。
ファイル:
$ cat file
foo1
foo2
foo3
4
5
指示:
$ awk '/foo/ {a=$0;n=NR} END{print n, a}' file
3 foo3