假设我在文本文件中有以下内容
...
abc
123
qwerty
line0
...
line3
line10
max
....
如何grep
abc
并捕获匹配后的所有行并停在包含特定文字的行,在此示例中为max
?
答案 0 :(得分:2)
您可以使用sed
:
sed '/abc/,/max/!d'
!
是否定的d
表示删除/addr1/,/addr2/
是"地址范围" 同样在Perl中:
perl -ne 'print if /abc/ .. /max/'
答案 1 :(得分:2)
比sed
和我心爱的Perl更简单awk
。
awk '/abc/,/max/' filename
答案 2 :(得分:0)
sed
/ awk
中的行范围寻址很简单,但如果您确实需要使用grep
,则可以使用:
grep -Poz 'abc[^\0]*max' file
-z
标志使grep
将输入视为空字节终止行,因此假设您的输入不包含任何\0
字节,则上述PCRE将选择所有内容在abc
和max
之间。