行グループ別にファイルを並べ替える

行グループ別にファイルを並べ替える

次のような内容のファイルがある場合:

FirstSection
    Unique first line in first section
    Unique second line in first section

SecondSection
    Unique first line in second section
    Unique second line in second section

...

NthSection
    Unique first line in Nth section
    Unique second line in Nth section

unixコマンド(sort、awkなど)を使用して、各3行のグループでインデントされていない最初の行に基づいてファイルをアルファベット順に並べ替えると同時に、既存のグループの下にインデントされた行を保持できますか?

ベストアンサー1

Perlでは、次のことができます。

  • ツバメファイル( perl -0n)
  • インデントされていない行に入力を分割するsplit(/^(?=\S)/m)
  • 並べ替えと印刷

perl -0ne 'print sort split(/^(?=\S)/m) ' ex 

おすすめ記事