同じパターン発生間の 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」などのファイルが生成されます。

関連情報