sort
实用程序使您可以方便地对文件中的行进行排序。但是,是否有一种优雅的方法可以在bash中对空行分隔的段落进行排序?
例如
ccc
aa
aba
bbb
aba
ccc
aaa
将不得不成为
aaa
aba
bbb
aba
ccc
ccc
aa
一种解决方案似乎是在所有非空白行上替换新的行符号:
ccc\naa
aba\nbbb
aba\nccc
aaa
然后调用run
sort
aaa
aba\nbbb
aba\nccc
ccc\naa
然后还原新行:
aaa
aba
bbb
aba
ccc
ccc
aa
最佳答案
Perl进行救援;
perl -n00 -e 'push @a, $_; END { print sort @a }' file
-00
选项启用“段落模式”,该模式将输入拆分为空行。如果-如您的示例中所示-最后输入行不一定为空,则需要单独添加换行符。
perl -n00 -e 'push @a, $_;
END { $a[-1] .= "\n" if $a[-1] !~ /\n\n$/;
print sort @a }' file
关于bash - 从bash对文本文件中的段落进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37669135/