Grep 相同模式出现之间的行

Grep 相同模式出现之间的行

我想 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”等。

相关内容