我们如何找到最后一个出现的搜索字符串(REGEX),然后在其后打印下一行?假设具有以下数据的文本文件
1 absc
1 sandka
file hjk
2 asdaps
2 amsdapm
file abc
所以,从这个文件中,我必须抓取或尴尬2的最后一次出现并打印后续的行。
awk
对于这些情况总是很方便的:
$ awk '/2/ {p=1; next} p{a=$0; p=0} END{print a}' file
file abc
解释
-
/2/ {p=1; next}
当2
出现在行中时,激活p
标志并跳过线。 -
p{a=$0; p=0}
当p
标志处于活动状态时,存储行并无激活p
。 -
END{print a}
打印存储的值,这恰好是最后一个,因为a
始终被覆盖。
使用 grep
-
grep -A 1 '^2
'选项显示在行开头匹配2
的行 -
然后使用
tail -1
打印最终行:
grep -a 1'^2'yourfile |尾巴-1