如何排序,保留空行的位置

Kaz*_*jan 6 unix sorting

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

<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!>
Run Code Online (Sandbox Code Playgroud)

我必须将其排序为

<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!>
Run Code Online (Sandbox Code Playgroud)

我尝试过使用这两个:

sort -t"|" -k4.5,4.6 -b data
LC_ALL=c sort -t"|" -k4.5,4.6 -b data
Run Code Online (Sandbox Code Playgroud)

但它总是给我

<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!>
Run Code Online (Sandbox Code Playgroud)

我想用排序后的值维护空间。我该怎么办?

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

kgk*_*tio 4

尝试执行:

sort -t"|" -k4.5,4.6 data | grep -v "^$" | awk '{print $0"\n"}'
Run Code Online (Sandbox Code Playgroud)