使用 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
sed
解决方案:
sed -n '/foo/h;$!b;g;p' bar.txt
反转文件并查找第一个匹配项。
tac file | awk '/foo/ {print; exit}'
tail
命令允许您检索输入流的最后 n
行。您可以将您的 awk
输出管道到 tail
中,以便除了最后一行之外,其它内容都被修剪掉:
awk '/foo/' bar.txt | tail -1
END
中打印。 - Ignacio Vazquez-Abrams$ cat file
foo1
foo2
foo3
4
5
命令:
$ awk '/foo/ {a=$0;n=NR} END{print n, a}' file
3 foo3