我有一个看起来像这样的数据
<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/