sorting - 如何排序忽略空行

标签 sorting unix

我有一个看起来像这样的数据

<some blah! blah!>|201451|<some blah! blah!>

<some blah! blah!>|201441|<some blah! blah!>

<some blah! blah!>|201431|<some blah! blah!>

<some blah! blah!>|201421|<some blah! blah!>

我必须将其排序

<some blah! blah!>|201421|<some blah! blah!>

<some blah! blah!>|201431|<some blah! blah!>

<some blah! blah!>|201441|<some blah! blah!>

<some blah! blah!>|201451|<some blah! blah!>

我尝试过使用这两种方法:

sort -t"|" -k4.5,4.6 -b data
LC_ALL=c sort -t"|" -k4.5,4.6 -b data

但它总是给我

<FOUR BLANK SPACE>
<some blah! blah!>|201421|<some blah! blah!>
<some blah! blah!>|201431|<some blah! blah!>
<some blah! blah!>|201441|<some blah! blah!>
<some blah! blah!>|201451|<some blah! blah!>

我想保留排序后的值的空间。我该怎么做??

基本上我必须忽略行空间并且不删除它们......

最佳答案

这是一个解决方案,首先排序删除空行,然后使用 sed 将空行插入回来:

grep -v '^$' <file> |  sort -t'|' -k 4.5,4.6 | sed 's/$/\n/'

关于sorting - 如何排序忽略空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24577558/

相关文章:

javascript - 从文本框中收集数字,对它们进行排序,然后按数字将它们放回去?

sorting - 为什么快速排序比基数排序更流行?

unix - 如何在与 "cat"连接的文件之间包含一个空行?

eclipse - 按可见性对 Eclipse 中的成员进行排序,无需按字母顺序排序

java - 如何将排序后的整数传递给 JOptionPane?

shell - 在文件中打印更大和更小的数字

c - 读取循环内的停止信号

bash - 循环不循环

python - 如何将 imdb 列表文件导入 postgresql 数据库?

linux - 通过公共(public)列标题连接 2 个文件(无需 awk/sed)