在多个图案之间使用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 jkl2 def2 ghi2 jkl2在多个图案之间使用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
并告诉我这是否对您有帮助
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