在多个图案之间使用awk或sed搜索,但仅打印最后一个匹配的图案

在多个图案之间使用awk或sed搜索,但仅打印最后一个匹配的图案,awk,sed,Awk,Sed,使用awk或sed如何选择发生在两个不同标记模式之间的线?可能有多个部分标记了这些图案,但只希望打印最后一个 For example: Suppose the file contains: abc def1 ghi1 jkl1 mno abc def2 ghi2 jkl2 mno pqr stu 例如:假设文件包含: abc def1 ghi1 jkl1 mno abc def2 ghi2 jkl2 mno pqr 斯图 开始模式是abc,结束模式是mno,所以我需要输出为: def2 ghi2

使用awk或sed如何选择发生在两个不同标记模式之间的线?可能有多个部分标记了这些图案,但只希望打印最后一个

For example: Suppose the file contains: abc def1 ghi1 jkl1 mno abc def2 ghi2 jkl2 mno pqr stu 例如:假设文件包含: abc def1 ghi1 jkl1 mno abc def2 ghi2 jkl2 mno pqr 斯图 开始模式是abc,结束模式是mno,所以我需要输出为:

def2 ghi2 jkl2 def2 ghi2 jkl2
不知道如何获取此信息。

请尝试以下
awk
并告诉我这是否对您有帮助

awk '/mno/{flag="";next} /abc/{val="";flag=1;next} flag{val=val?val ORS $0:$0} END{print val}'  Input_file
解决方案二:

使用gnu sed

sed '
  $bB
  :C
  /^abc$/!d
  :A
  $bB
  N
  /\nabc$/s/.*\n//
  /\nmno$/!bA
  s/[^\n]*\n\(.*\)\n[^\n]*/\1/
  h
  N
  s/.*\n//
  bC
  :B
  g
  /./!d
' infile

我不是认真的::
tac文件| sed-n'/mno/,/abc/{/mno/d;/abc/q;p}'tac
@Cyrus:Why not?@userunknown:很难看,因为整个文件必须放在内存中。大多数文本文件都能完美地放在内存中。@GauravM:有趣部分的长度总是一样的吗?
sed '
  $bB
  :C
  /^abc$/!d
  :A
  $bB
  N
  /\nabc$/s/.*\n//
  /\nmno$/!bA
  s/[^\n]*\n\(.*\)\n[^\n]*/\1/
  h
  N
  s/.*\n//
  bC
  :B
  g
  /./!d
' infile