Příkaz Sort je užitečný pro řazení/řazení řádků v textových souborech. Data můžete třídit v textovém souboru a zobrazit výstup na obrazovce nebo je přesměrovat do souboru. Na základě vašeho požadavku nabízí řazení několik možností příkazového řádku pro řazení dat v textovém souboru.
Sort syntaxe příkazu:
$ sort [-options]
Zde je například testovací soubor:
$ cat test zzz sss qqq aaa BBB ddd AAA
A zde je to, co získáte, když je příkaz sort proveden na tomto souboru bez jakékoli volby. Setřídí řádky v testovacím souboru a zobrazí setříděný výstup.
$ sort test aaa AAA BBB ddd qqq sss zzz
1. Proveďte číselné řazení pomocí volby -n
Pokud chceme třídit podle číselné hodnoty, můžeme použít -n nebo –numeric-sort možnost.
Pro tento příklad vytvořte následující testovací soubor:
$ cat test 22 zzz 33 sss 11 qqq 77 aaa 55 BBB
Následující příkaz sort seřadí řádky v testovacím souboru podle číselné hodnoty v prvním slově řádku a zobrazí setříděný výstup.
$ sort -n test 11 qqq 22 zzz 33 sss 55 BBB 77 aaa
2. Seřadit čísla čitelná pro člověka pomocí volby -h
Pokud chceme třídit podle lidsky čitelných čísel (např. 2K 1M 1G), můžeme použít -h nebo –human-numeric-sort možnost.
Pro tento příklad vytvořte následující testovací soubor:
$ cat test 2K 2G 1K 6T 1T 1G 2M
Následující příkaz sort seřadí pro člověka čitelná čísla (tj. 1K =1 tisíc, 1M =1 milion, 1G =1 Giga, 1T =1 Tera) v testovacím souboru a zobrazí setříděný výstup.
$ sort -h test 1K 2K 2M 1G 2G 1T 6T
3. Seřadit měsíce v roce pomocí volby -M
Pokud chceme řadit v řádu měsíců v roce, pak můžeme použít -M nebo –třídění podle měsíce možnost.
Pro tento příklad vytvořte následující testovací soubor:
$ cat test sept aug jan oct apr feb mar11
Následující příkaz sort seřadí řádky v testovacím souboru podle měsíčního pořadí. Poznámka, řádky v souboru by měly obsahovat alespoň 3 znaky názvu měsíce na začátku řádku (např. jan, feb, mar). Pokud dáme ja pro leden nebo au pro srpen, příkaz sort to nebude považovat za název měsíce.
$ sort -M test jan feb mar11 apr aug sept oct
4. Zkontrolujte, zda je obsah již seřazen pomocí volby -c
Pokud chceme zkontrolovat, zda jsou data v textovém souboru seřazená nebo ne, můžeme použít -c nebo –check, –check=diagnose-first možnost.
Pro tento příklad vytvořte následující testovací soubor:
$ cat test 2 5 1 6
Následující příkaz sort zkontroluje, zda jsou data textového souboru setříděna nebo ne. Pokud tomu tak není, zobrazí se první výskyt s číslem řádku a neuspořádanou hodnotou.
$ sort -c test sort: test:3: disorder: 1
5. Změňte výstup a zkontrolujte jedinečnost pomocí voleb -r a -u
Pokud chceme získat setříděný výstup v obráceném pořadí, pak můžeme použít -r nebo –zpětně volba. Pokud soubor obsahuje duplicitní řádky, pak pro získání jedinečných řádků v seřazeném výstupu lze použít volbu „-u“.
Pro tento příklad vytvořte následující testovací soubor:
$ cat test 5 2 2 1 4 4
Následující příkaz sort seřadí řádky v testovacím souboru v opačném pořadí a zobrazí setříděný výstup.
$ sort -r test 5 4 4 2 2 1
Následující příkaz sort třídí řádky v testovacím souboru v opačném pořadí a odstraňuje duplicitní řádky z setříděného výstupu.
$ sort -r -u test 5 4 2 1
6. Selektivně třídit obsah, přizpůsobit oddělovač, zapisovat výstup do souboru pomocí možností -k, -t, -o
Pokud chceme třídit podle pozice sloupce nebo slova v řádcích textového souboru, pak lze použít volbu „-k“. Pokud je každé slovo v každém řádku souboru odděleno oddělovačem kromě ‚mezera‘, pak můžeme oddělovač určit pomocí volby „-t“. Můžeme získat seřazený výstup v libovolném zadaném výstupním souboru (pomocí volby „-o“) namísto zobrazení výstupu na standardním výstupu.
Pro tento příklad vytvořte následující testovací soubor:
$ cat test aa aa zz aa aa ff aa aa tt aa aa kk
Následující příkaz sort seřadí řádky v testovacím souboru podle 3. slova každého řádku a zobrazí setříděný výstup.
$ sort -k3 test aa aa ff aa aa kk aa aa tt aa aa zz
$ cat test aa|5a|zz aa|2a|ff aa|1a|tt aa|3a|kk
Zde se používá dohromady několik možností. V testovacím souboru jsou slova na každém řádku oddělena oddělovačem ‚|‘. Třídí řádky v testovacím souboru na 2. slově každého řádku na základě číselné hodnoty a ukládá setříděný výstup do zadaného výstupního souboru.
$ sort -n -t'|' -k2 test -o outfile
Obsah výstupního souboru je uveden níže.
$ cat outfile aa|1a|tt aa|2a|ff aa|3a|kk aa|5a|zz