awins提取不同的段落

时间:2017-05-14 23:01:05

标签: unix awk

假设我有一个包含不同段落的大文件

> Rosa Luxemburg
xxxxxxxxx
xxxxxxxxx
> Charles Darwin
xxxxxxxxx
xxxxxxxxx
xxxxxxxxx
> Charles Chaplin
xxxxxxxxx
xxxxxxxxx
xxxxxxxxx

而且我只想获得名称为Charles(有一千多个)的段落:

> Charles Darwin
xxxxxxxxx
xxxxxxxxx
xxxxxxxxx
> Charles Chaplin
xxxxxxxxx
xxxxxxxxx
xxxxxxxxx

如何使用awk做到这一点?

1 个答案:

答案 0 :(得分:3)

这样的东西似乎有效,使用>作为新段落分隔符:

$ cat file9
> Rosa Luxemburg
aaaaaaaaa
aaaaaaaaaa
> Charles Darwin
bbbbb
bbbbbbb
bb
> Charles Chaplin
cccc
ccccc
c
> George Vasiliou
dd
ddddd
dd
dddd

$ awk '/^>/{p=0}/^> Charles/{p=1}p' file9
> Charles Darwin
bbbbb
bbbbbbb
bb
> Charles Chaplin
cccc
ccccc
c