如何按字母顺序对文件各部分进行排序?

Moh*_*awy 5 awk python text-processing sort

我有一个由多个部分组成的文件,每个部分都以特定标题开头,但所有部分都以相同的字符串结尾,我想根据标题对文件部分进行排序,而不对每个部分的内容进行排序(即将整个部分作为一个部分)块)每两个部分之间还有一个空行,以澄清输入是否为的想法

string5
z
y
x
string

string2
x
z
y
f
string
Run Code Online (Sandbox Code Playgroud)

所需的输出将是

string2
x
z
y
f
string

string5
z
y
x
string
Run Code Online (Sandbox Code Playgroud)

pLu*_*umo 8

使用 GNUsedsort

sed 's/^$/\x0/g' file | sort -z | tr '\0' '\n'
Run Code Online (Sandbox Code Playgroud)
  • 将空字符放入空行
  • sort使用空字符作为分隔符 ( -z)
  • 最后使用 替换空分隔符为新行tr
  • 要删除输出第一行和最后一行中的空行,您可以添加| sed '1{/^$/d};${/^$/d}'

输出:

string2
x
z
y
f
string

string5
z
y
x
string
Run Code Online (Sandbox Code Playgroud)

(也许有人可以帮助\x0为非 GNU 工作sed相关问题