Sorteren (Unix)
sort is een commando van de Unix en Unix-achtige besturingssystemen , en meer in het algemeen van de POSIX [1] systemen , die een of meer tekstbestanden (of standaardinvoer ) leest en de regels alfabetisch of volgens de gespecificeerde criteria sorteert, waardoor het resultaat op standaarduitvoer of op een bestand. Het is een soort filter .
sort kan ook verifiëren dat de gelezen regels al zijn gesorteerd volgens een bepaald criterium. In dit geval levert het geen resultaten op en is de uitvoerwaarde gelijk aan 0of de gegevens al zijn gesorteerd, of groter dan 0als dat niet het geval is.
sort kan dubbele regels direct verwijderen, vergelijkbaar met de uniq- opdracht .
Syntaxis
De algemene syntaxis van soort is als volgt:
sorteer [ opties ] [-] [ bestand1 [ bestand2 ...]]
De optionele bestandsparameters geven de tekstbestanden aan waaruit de regels moeten worden gelezen om te sorteren. Als er meerdere bestanden zijn opgegeven, worden deze afzonderlijk gesorteerd en vervolgens worden de regels samengevoegd zodat het uiteindelijke resultaat ook wordt gesorteerd. Als er geen bestand is opgegeven, worden de te sorteren regels uit de standaardinvoer gelezen .
Het dubbele streepje --(optioneel) geeft aan dat de volgende parameters niet als opties moeten worden beschouwd.
Opties
Een van de belangrijkste opties zijn:
-c- Controleer of de gelezen regels al zijn gesorteerd volgens de opgegeven criteria. In dit geval produceert de opdracht geen berichten en is de uitvoerwaarde gelijk aan
0of de gegevens al zijn gesorteerd, of anders dan0als ze dat niet zijn. -m- Het gaat ervan uit dat de opgegeven bestanden al zijn gesorteerd en gaat verder met het samenvoegen van hun regels.
-o nome_file- Schrijft het resultaat naar het aangegeven bestand in plaats van naar de standaarduitvoer .
-u- Verwijder dubbele regels uit het resultaat (vergelijkbaar met wat het uniq- commando deed ).
-f- Er wordt geen onderscheid gemaakt tussen hoofdletters en kleine letters.
-r- Keert de volgorde van de volgorde om en produceert resultaten die beginnen met de grootste waarde.
-n- Sorteer numeriek in plaats van alfabetisch.
-i- Negeer niet-afdrukbare tekens.
-k chiave_di_ordinamento- Geeft een deel van de regel aan dat als sorteersleutel moet worden gebruikt. U kunt deze optie meerdere keren opgeven om meerdere sorteersleutels te definiëren die in cascade moeten worden gebruikt.
-t carattere- Specificeert het teken dat moet worden gebruikt als veldscheidingsteken (in plaats van de standaardwaarde) bij het definiëren van sorteersleutels.
De GNU- versie van sort biedt onder andere ook de volgende opties:
-g- Het sorteert numeriek en accepteert ook de getallen die worden herkend door de standaard C-taalbibliotheekfunctie ( bijv . getallen
strtod()uitgedrukt in wetenschappelijke notatie). -s- Het voert een stabiele sortering uit (met dezelfde sorteersleutels behoudt het de oorspronkelijke volgorde van de regels).
Sorteersleutels
Met deze optie -kis het mogelijk om een sorteersleutel op een gedeelte van de regel te definiëren. Door meerdere opties op te geven -k, kunt u meerdere sorteersleutels definiëren die in cascade moeten worden gebruikt.
De syntaxis van een sorteersleutel is als volgt:
numero_campo_iniziale[.indice_primo_carattere][tipo][,numero_campo_finale[.indice_ultimo_carattere][tipo]]
initial_field_number is een numerieke waarde die het nummer aangeeft van het veld (vanaf 1) dat in de sleutel moet worden opgenomen, en index_first_character is de index van het eerste teken in het veld dat in aanmerking moet worden genomen (vanaf 1).
Evenzo geeft final_field_number , indien gespecificeerd, het laatste veld aan dat in de sleutel moet worden opgenomen, en last_character_index is de index van het laatste teken van dat veld.
Beide kunnen worden gevolgd door type , wat een teken is dat het type sortering specificeert dat moet worden uitgevoerd voor het specifieke veld (bijvoorbeeld nom een numerieke sortering aan te geven, fom aan te geven dat er geen rekening moet worden gehouden met het verschil tussen hoofdletters en kleine letters, rom te keren het sorteren).
De verdeling van een regel in velden wordt uitgevoerd op basis van het scheidingsteken dat is opgegeven met de optie -t. Bij afwezigheid wordt elke reeks spaties als een scheidingsteken beschouwd.
Voorbeelden
Alfabetisch sorteren
Sorteer alfabetisch voor de hele regel:
$ kat voorbeeld.txt Johannes 200 Alice 30 Charles 100 Bruno 5 $ sorteer voorbeeld.txt Alice 30 Bruno 5 Charles 100 Johannes 200
Numeriek sorteren met toets
Sorteer numeriek met het tweede veld als sleutel:
$ kat voorbeeld.txt Johannes 200 Alice 30 Charles 100 Bruno 5 $ sort -k 2 -n voorbeeld.txt Bruno 5 Alice 30 Charles 100 Johannes 200
Sorteer bestanden en mappen op aflopende grootte (vijfde kolom):
$ ls -l | sorteer -n -r -k 5 -rw-r - r-- 1 wortel wortel 1057 1 maart 20:12 ring + ster -rw-r - r-- 1 wortel wortel 727 1 maart 20:12 A_star -rw-r - r-- 1 wortel wortel 535 1 mrt 20:12 star2 -rw-r - r-- 1 wortel wortel 505 1 maart 20:12 spirals_and_stars -rw-r - r-- 1 wortel wortel 503 1 mrt 20:12 krommen -rw-r - r-- 1 wortel wortel 475 1 mrt 20:12 simily -rw-r - r-- 1 wortel wortel 458 1 mrt 20:12 ring -rw-r - r-- 1 wortel wortel 415 1 maart 20:12 sterren -rw-r - r-- 1 wortel wortel 387 1 mrt 20:12 sprial -rw-r - r-- 1 wortel wortel 377 1 mrt 20:12 polys
Opmerkingen
Gerelateerde items
- sorteeralgoritme
- uniq - Verwijdert dubbele regels in een gesorteerd bestand.
Externe links
- Sorteren : Tekstbestanden sorteren , op GNU Texutils handleiding . Ontvangen 20 mei 2008 .
- Sorteren , op Linux Man Pages . Ontvangen op 21 mei 2008 .
- ( EN ) sort (1) , op Solaris 10 Reference Manual Collection - man-pagina's . Ontvangen op 21 mei 2008 .