我想要打印一条有图案的线条和正好在它之前的线条 例如:说文件是:
This is line 1
This is line 2
This is FORMAT line 3
This is line 4
This is line 5
This is FORMAT line 6
说我要搜索的模式是FORMAT
。所以输出应该是
This is line 2
This FORMAT line 3
This is line 5
This is FORMAT line 6.
我尝试使用sed
,我能够打印带有图案的线条而不是前一条线条。
第二个问题(因为不想创建单独的问题)如何在下一行中打印没有特定模式的行? 例如。对于上面的文件和模式,输出应该是
This is line 1
This is line 4
答案 0 :(得分:1)
你可以用grep做到这一点。 Grep的B选项之前可以显示n行。
grep -B 1 reg.ex filename
答案 1 :(得分:0)
sed -n '/FORMAT/{H;g;p;};h' filename
答案 2 :(得分:0)
如果你想在awk中真正想要它,你可以做这样的事情:
$ awk '/FORMAT/ { print lastline; print } { lastline = $0 }' < format.txt
答案 3 :(得分:0)
这可能适合你(GNU sed):
sed -n '$!N;/\n.*FORMAT/p;D' file
这一次总是读取2行,如果第二行包含图案则打印它们。