使用awk或sed如何选择两种不同标记图案之间的线条?可能有多个标记有这些图案的部分,但只想要打印最后一个部分。
For example: Suppose the file contains: abc def1 ghi1 jkl1 mno abc def2 ghi2 jkl2 mno pqr stu
起始模式是abc,结束模式是mno所以,我需要输出为:
def2 ghi2 jkl2
不知道怎么做到这一点。
答案 0 :(得分:1)
您能否请关注awk
并告诉我这是否对您有所帮助。
awk '/mno/{flag="";next} /abc/{val="";flag=1;next} flag{val=val?val ORS $0:$0} END{print val}' Input_file
解决方案第二:
awk '/abc/{val=""}/abc/,/mno/{if($0~/mno/||$0~/abc/){next};val=val?val ORS $0:$0}END{print val}' Input_file
答案 1 :(得分:1)
使用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