我有短文本文件,我应该使用特殊模式输出数据。我的档案:
)
逐个,从test1到test2再到test3。所以......我写了这个命令:
99 test1
88 test2
10 test3
11 test1
12 test1
13 test2
14 test3
17 test1
18 test4
在输出中我有结果:
sed '/test1.*\|test2.*\|test3/!d' filename
在这种情况下,我有线,我不需要:
99 test1
88 test2
10 test3
11 test1
12 test1
13 test2
14 test3
17 test1
这条线不是一个接一个。我怎么做结果,我需要?请帮我。感谢您的关注。我应该得到这个结果:
11 test1
17 test1
答案 0 :(得分:0)
一个简单快捷的方法,虽然不是很优雅,但是将它放在一行中,以所需的模式打破它,然后再用模式过滤它:
sed ':a;N;$!ba;s/\n/\\n/g' < filename | \
sed 's/\([0-9][0-9] test1\\n[0-9][0-9] test2\\n[0-9][0-9] test3\\n\)/\n\1\n/g' | \
egrep "[0-9][0-9] test1\\\n[0-9][0-9] test2\\\n[0-9][0-9] test3\\\n" | \
sed 's/\\n/\n/g' | grep .