按行组对文件进行排序

tac*_*nol 4 osx freebsd sort

如果我有一个内容类似于以下内容的文件:

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
Run Code Online (Sandbox Code Playgroud)

是否可以使用 unix 命令(例如 sort、awk)按每个三行组中的第一个非缩进行按字母顺序对文件进行排序,同时将缩进行保留在现有组下?

JJo*_*oao 6

使用 Perl,您可以按照以下方式运行:

  • 啜饮文件 ( perl -0n)
  • 通过不缩进的行分割输入 split(/^(?=\S)/m)
  • 排序和打印

perl -0ne 'print sort split(/^(?=\S)/m) ' ex 
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说很好。非常简洁。Perl 这些天往往被遗忘,但它完成了这项工作,而我不需要在我的工作站上安装额外的软件。 (2认同)