该sort
实用程序使您可以方便地对文件中的行进行排序。但是,是否有一种优雅的方法可以在bash中对空行分隔的段落进行排序?
例如
ccc
aa
aba
bbb
aba
ccc
aaa
Run Code Online (Sandbox Code Playgroud)
将不得不成为
aaa
aba
bbb
aba
ccc
ccc
aa
Run Code Online (Sandbox Code Playgroud)
一种解决方案似乎是在所有非空白行上替换换行符号:
ccc\naa
aba\nbbb
aba\nccc
aaa
Run Code Online (Sandbox Code Playgroud)
然后调用运行 sort
aaa
aba\nbbb
aba\nccc
ccc\naa
Run Code Online (Sandbox Code Playgroud)
然后还原新行:
aaa
aba
bbb
aba
ccc
ccc
aa
Run Code Online (Sandbox Code Playgroud)
Perl进行救援;
perl -n00 -e 'push @a, $_; END { print sort @a }' file
Run Code Online (Sandbox Code Playgroud)
该-00
选项启用“段落模式”,该模式将输入拆分为空行。
如果-如您的示例中所示-最后输入行不一定为空,则需要单独添加换行符。
perl -n00 -e 'push @a, $_;
END { $a[-1] .= "\n" if $a[-1] !~ /\n\n$/;
print sort @a }' file
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
705 次 |
最近记录: |