De sort opdracht gebruik je om gegevensvelden te sorteren, maar computers sorteren niet zoals mensen. Zo komt gegeven PN.99 voor ons mensen voor PN.100. Computers sorteren door één voor één de tekens in de gegevens te vergelijken, waardoor de sort opdracht PN.100 voor PN.99 plaatst. Het cijfer 1 komt namelijk voor de 9.
dany@pindabook:~>echo -e "PN.99\nPN.100"
PN.99 PN.100 dany@pindabook:~>echo -e "PN.99\nPN.100" | sort
PN.100 PN.99
Om de sort opdracht zoals mensen te laten sorteren, voeg je de -V optie toe.
dany@pindabook:~> echo -e "PN.99\nPN.100" | sort -V
PN.99
PN.100
De -V optie (of --version) sorteert op versienaam en nummer, waarbij elke cijferreeks als een getal wordt beschouwd. Daardoor wordt de sorteeropdracht menselijker uitgevoerd. Deze truck werkt ook met getallen midden in een tekenreeks:
dany@pindabook:~>echo -e "P9n\nP10n"
P9n P10n dany@pindabook:~>echo -e "P9n\nP10n" | sort
P10n P9n dany@pindabook:~>echo -e "P9n\nP10n" | sort -V
P9n P10n
Dit werkt zelfs als er meerdere getallen in de tekenreeksen voorkomen:
dany@pindabook:~>echo -e "P9d9n\nP9d10n\nP10d9n\nP10d10n" | shuf
P9d9n P10d9n P10d10n P9d10n dany@pindabook:~>echo -e "P9d9n\nP9d10n\nP10d9n\nP10d10n" | shuf | sort
P10d10n P10d9n P9d10n P9d9n dany@pindabook:~>echo -e "P9d9n\nP9d10n\nP10d9n\nP10d10n" | shuf | sort -V
P9d9n P9d10n P10d9n P10d10n
De -V optie laat ook toe om op een bepaald veld te sorteren:
dany@pindabook:~>echo -e "P3\tN10\nP4\tN9"
P3 N10 P4 N9 dany@pindabook:~>echo -e "P3\tN10\nP4\tN9" | sort -t$'\t' -Vk2,2
P4 N9 P3 N10
Bij het opgeven van de -V optie gaat sort op zoek naar tekenreeksen die er als volgt uitzien:
voorvoegsel[getal]achtervoegsel
Waarbij het achtervoegsel met de volgende reguliere expressie gedefinieerd wordt:
(\.[A-Za-z~][A-Za-z0-9~]*)*
De auteurs van de sort opdracht waarschuwen voor onverwachte sorteerresultaten. M.a.w. controleer steeds of sort correct sorteert. Dat de auteurs van sort een goede sorteermethode gebruiken, bewijst het volgende voorbeeld met geneste nummering:
dany@pindabook:~>echo -e "Pn.100\nPn.100.9\nPn.100.9.1" | shuf
Pn.100.9 Pn.100 Pn.100.9.1 dany@pindabook:~>echo -e "Pn.100\nPn.100.9\nPn.100.9.1" | shuf | sort -V
Pn.100 Pn.100.9 Pn.100.9.1
Let eveneens op met hoofdletters en kleine letters. Niet cijfers worden namelijk hoofdlettergevoelig gesorteerd.
dany@pindabook:~> echo -e "PN.100\nPn.99" | sort -V
PN.100
Pn.99
Sorteren met een computer is verschrikkelijk ingewikkeld. We mogen de sort auteurs dan ook dankbaar zijn voor de -V optie. Zelfs rekenbladen hebben er moeite mee, en dat zijn specialisten in het verwerken van gegevens. Veel rekenbladgebruikers splitsen de gegevens dan in een deel met letters en het getal, sorteren de getallen en voegen de onderdelen terug samen. LibreOffice Calc bevat Natuurlijk sorteren, maar ook daar gaat het soms fout.