很抱歉再次编辑问题。我发现之前我没有清楚地问过我的问题
我昨天问了a question,但我今天发现了另一个问题/。\
这是我的档案:
Time 00:00:01
kkk
lll
ccc
aaa: 88
...
Time 00:00:03
jjj
kkk
lll
ccc
aaa: 89
ooo
bbb
aaa
kkk
lll
ccc
aaa: 90
...
Time 00:00:04
kkk
lll
...
这是我想要的输出:
Time 00:00:01
kkk
lll
ccc
aaa: 88
Time 00:00:03
kkk
lll
ccc
aaa: 89
Time 00:00:03
kkk
lll
ccc
aaa: 90
上次我正在寻找一条线,另一条线在它上面。这次我正在寻找具有多行的模式:
kkk
lll
ccc
aaa: /any thing here/
和一行
Time /any thing here/
从我昨天提出的问题来看,我试过了
awk '/Time/{a=$0}/kkk\nlll\nccc\naaa/{print a"\n"$0}' file
和
perl -ane '$t=$_ if /Time/; print $t,$_ if /kkk\nlll\nccc\naaa/' test2
和
pcregrep.exe -M 'kkk.*(\n|.)lll.*(\n|.)ccc.*(\n|.)*aaa' test2
来自this的
但他们没有工作或输出不是我想要的。
我发现像this这样的线程正在讨论状态机,但它很复杂,因为我有几行匹配
有什么建议可以轻易解决这个问题吗?
答案 0 :(得分:1)
(这个答案是为这个问题的第一个版本而写的。)
$ awk -v RS="Time" -v p="\nkkk\nlll\nccc\naaa" '$0~p {print "Time",$1,p;}' file
Time 00:00:01
kkk
lll
ccc
aaa
Time 00:00:03
kkk
lll
ccc
aaa
(这可能需要GNU awk。)