假设我有一个包含不同段落的大文件
> 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做到这一点?
答案 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