查找搜索字符串的最后一次出现,然后在ksh中打印下一行



我们如何找到最后一个出现的搜索字符串(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

最新更新