我想 grep 相同模式之间的行,然后将每个匹配行保存在不同的文件中。例如,我有这个:
name
aaa
bbb
bbb
ccc
name
aaa1
bbb1
ccc1
name
...
我想拥有
name
aaa
bbb
bbb
ccc
在文件1中
name
aaa1
bbb1
ccc1
在文件 2 中,依此类推。
我尝试在 awk 中使用标志反转,如下所示:
awk '/^name/ {flag=!flag; next} flag {print}'
但我没有得到我想要的。
您有什么建议吗?
答案1
怎么样:
awk '/name/{n+=1}{print > "file_"n".txt"}'
这将产生file_1.txt
, file_2.txt
... 等
答案2
您还可以使用“csplit”来实现此目的,如下所示:
csplit yourfile -s -n 1 -f file_ '%name%' '/name/' '{*}'
这将生成文件“file_1”、“file_2”等。