如何在使用awk/sed时多次出现的两个标记模式之间选择行?使用awk或sed如何选择在两个不同的标记模式之间发生的行?可能有多个部分标记了这些模式。例如:假设文件包含:abc
def1
ghi1
jkl1
mno
abc
def2
ghi2
jkl2
mno
pqr
stu开始模式是abc结束模式是mno因此,我需要输出如下:def1
ghi1
jkl1
def2
ghi2
jkl2我使用sed来匹配模式一次:sed -e '1,/abc/d' -e '/mno/,$d' <FILE>有没有办法sed或awk反复这样做直到文件结束?
3 回答

三国纷争
TA贡献1804条经验 获得超7个赞
使用awk
在必要时使用标志触发打印:
$ awk '/abc/{flag=1;next}/mno/{flag=0}flag' file def1 ghi1 jkl1 def2 ghi2 jkl2
这是怎么回事?
匹配具有此文本的行,以及/abc/
的确如此。/mno/
设置/abc/{flag=1;next}
当文本flag
被发现了。然后,它跳过了线。abc
取消设置/mno/{flag=0}
当文本flag
被发现了。mno
- 决赛
是具有默认操作的模式,即flag
*如果print $0
等于1这一行是打印出来的。.flag

HUX布斯
TA贡献1876条经验 获得超6个赞
sed
:
sed -n -e '/^abc$/,/^mno$/{ /^abc$/d; /^mno$/d; p; }'
-n
abc
mno
{ ... }
abc
mno
p
abc
..mno
添加回答
举报
0/150
提交
取消