我目前正在努力排序数据。我在网上搜索,从未看到任何提及我的问题的主题......
我的文件包含无序数据,如:
1
blank line
3
blank line
2
值之间有一个空行。当我使用我的脚本时,它会有效地对数据进行排序,但空白行位于顶部,值位于底部,如:
blank line
blank line
1
2
3
我希望输出如下:
1
blank line
2
blank line
3
保留输入的结构。
我使用的命令是:sort -nk1 filename > newfile
如何在正确的位置保留空白行?
答案 0 :(得分:3)
删除空行,再次排序并添加空行:
grep . filename | sort -nk1 | sed 's/$/\n/' > newfile
您可以合并grep
和sed
sort -nk1 filename | sed -n '/./ s/$/\n/p' > newfile
如果您在每条数据线后面没有空行,则需要暂时添加一些标记
tr '\n' '\r' < filename |
sed -r 's/([^\r]+)\r\r/\1\a\r/g;s/\r/\n/g' |
sort -nk1 | sed 's/\a/\n/g' > newfile