查找搜索字符串的上次出现并在Ksh中打印下一行

时间:2014-01-24 11:50:14

标签: regex awk grep ksh

我们怎样才能找到最后一次出现的搜索字符串(正则表达式)然后打印下一行呢?假设具有以下数据的文本文件

1 absc
1 sandka
file hjk
2 asdaps
2 amsdapm
file abc

所以,从这个文件中,我必须grep或awk最后一次出现的2并打印它后面的行。

2 个答案:

答案 0 :(得分:5)

对于这些情况,

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总是被覆盖。

答案 1 :(得分:0)

使用grep

  • grep -A 1 '^2'选项会在一行的开头显示与2匹配的行

  • 然后使用tail -1打印最后一行:

  

grep -A 1'^ 2'yourfile |尾巴-1