Najprostszą sztuczką dla tego zestawu danych jest traktowanie drugiej kolumny jako numeru wersji.
$ cat Data3 | sort -k2,2V -t'|'
Help Text|50001/100/7
My Message|50001/100/7
Visible Text|50001/100/52
Text Message|50001/100/63
Invisible Text|50002/100/1
Help Message|50002/100/11
My Text|50002/100/43
Jednak to nie zawsze działa w zależności od danych wejściowych. To zadziała, ponieważ wartości w drugiej kolumnie są takie same.
Możesz zrobić to, co zaproponował fedorqui i uruchomić sortowanie dwa razy, a drugi raz zrobić stabilny sort. Ze strony podręcznika: -s, --stable (ustabilizuj sort, wyłączając porównanie ostatniego testu).
Pierwszy sort według kryteriów sortowania wtórnego. Następnie wykonaj sortowanie stabilne, zachowując kolejność sortowania w wierszach, które mają wspólny klucz z podstawowych kryteriów sortowania.
$ cat Data3 | sort -k3,3n -t'/' | sort -k2,2n -t'|' -s
Help Text|50001/100/7
My Message|50001/100/7
Visible Text|50001/100/52
Text Message|50001/100/63
Invisible Text|50002/100/1
Help Message|50002/100/11
My Text|50002/100/43
Masz trochę szczęścia w tym przypadku, ponieważ -k2,2n -t '|' będzie traktować drugą kolumnę "50001/100/7" jako liczbę, która prawdopodobnie będzie równa 50001. Możesz skończyć się dziwnymi sytuacjami, jeśli będzie to oddzielane przecinkami zamiast ukośnika i używasz różnych ustawień narodowych w swoim środowisku. Na przykład, domyślnie w moim środowisku uruchamiam en_US.UTF-8, który zachowuje się w ten sposób.
$ cat Data3 | tr '/' ',' | sort -k3,3n -t',' | LC_NUMERIC=en_US.UTF-8 sort -k2,2n -t'|' -s
Help Text|50001,100,7
My Message|50001,100,7
Invisible Text|50002,100,1
Visible Text|50001,100,52
Text Message|50001,100,63
Help Message|50002,100,11
My Text|50002,100,43
Czego można oczekiwać to:
$ cat Data3 | tr '/' ',' | sort -k3,3n -t',' | LC_NUMERIC=C sort -k2,2n -t'|' -s
Help Text|50001,100,7
My Message|50001,100,7
Visible Text|50001,100,52
Text Message|50001,100,63
Invisible Text|50002,100,1
Help Message|50002,100,11
My Text|50002,100,43
Co rurociągów swój wynik i za pomocą 'sort' ponownie? – fedorqui