How to sort, preserving position of blank lines

sorting, unix

Solution

Try to execute:

sort -t"|" -k4.5,4.6 data | grep -v "^$" | awk '{print $0"\n"}'

Problem

I have a data looks like this ``` <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!> ``` I have to sort it to ``` <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!> ``` I have tried using both these: ``` sort -t"|" -k4.5,4.6 -b data LC_ALL=c sort -t"|" -k4.5,4.6 -b data ``` but it always gives me ``` <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!> ``` I want to maintain the space with the sorted value. How do I do so?? Basically I have to ignore the line space and not remove them...

Original source