パターン間の行を別のファイルに置き換える方法

パターン間の行を別のファイルに置き換える方法

入力ファイルには次のものがあります

#Start para
0 hello dq
1 world dq
2 welcomes dq
3 you dq
#Start para
0 how tq
1 are tq
2 you tq
#Start para
0 say dq
1 hello dq
2 to dq
3 the dq
4 world dq

以下のような他のファイルに移動したいと思います。

#Start para
3 you dq
2 welcomes dq
1 world dq
0 hello dq
#Start para
2 you tq
1 are tq
0 how tq
#Start para
4 world dq
3 the dq
2 to dq
1 hello dq
0 say dq

sedまたはを使用してこれをどのように実行できますかawk?基本的に段落を反転したいと思います#Start para。ただし、段落の順序は同じままでなければなりません。

ベストアンサー1

唯一のものが#ブロックの始まりであれば、試してみることができawkます

$ awk -F'\n' 'BEGIN{RS="#"}NR>1{print "#"$1;for(i=NF-1;i>1;i--)print $i}' file

結果:

#Start para
3 you dq
2 welcomes dq
1 world dq
0 hello dq
#Start para
2 you tq
1 are tq
0 how tq
#Start para
4 world dq
3 the dq
2 to dq
1 hello dq
0 say dq

おすすめ記事