msort(1)çok satırlı kayıtlara sahip dosyaları sıralayabilmek için tasarlanmıştır. İsteğe bağlı bir GUI'nin yanı sıra normal ve insanlar için kullanılabilir bir komut satırı sürümüne sahiptir. (En azından, el kitaplarını dikkatlice okumayı ve örnekler aramayı seven insanlar ...)
AFAICT, kayıtlarınız için rastgele bir desen kullanamazsınız, bu nedenle kayıtlarınız sabit boyutlu değilse (karakter veya satır değil bayt cinsinden). boş satırlarla ayrılmış satır blokları olan kayıtlar için msortbir -bseçenek vardır.
Girdilerinizi -bher şeyden önce boş bir satır koyarak ###...(birincisi hariç) oldukça kolay çalışacak bir formata dönüştürebilirsiniz .
Varsayılan olarak, stderr'deki istatistikleri yazdırır, bu yüzden en azından tüm girdinin tek bir kayıt olduğunu düşündüğü için sıralanmadığı zamanı söylemek kolaydır.
msortverileriniz üzerinde çalışır. sedKomut her bir yeni satır başa ekler #+1. hat dışında hat -wsıralar bütün kaydı (sözlük sırasında). Bir kaydın hangi kısmını anahtar olarak kullanacağınızı seçmek için seçenekler var, ancak onlara ihtiyacım yoktu.
Ayrıca ekstra satırsonu sıyırdı.
$ sed '2,$ s/^#\+/\n&/' unsorted.records | msort -b -w 2>/dev/null
####################################
KEY1
VAL11
VAL12
VAL13
VAL14
####################################
KEY2
VAL21
VAL22
VAL23
VAL24
####################################
KEY3
VAL31
VAL32
VAL33
VAL34
Bunu -r '#'kayıt ayırıcı olarak kullanmakta şansım olmadı . Tüm dosyanın tek bir kayıt olduğunu düşünüyordu.