sort
příkaz se používá v Linuxu k tisku výstupu souboru v daném pořadí. Tento příkaz zpracovává vaše data (obsah souboru nebo výstup libovolného příkazu) a mění jejich pořadí určeným způsobem, což nám pomáhá data číst efektivně. Je velmi užitečný v případech, kdy je k dispozici velké množství informací a je třeba je uspořádat v abecedním nebo vzestupném či sestupném číselném pořadí.
Při abecedním řazení příkaz kontroluje první písmeno každého řádku a posouvá řádky nahoru nebo dolů, aby se každý řádek uspořádal v abecedním pořadí.
Při numerickém řazení příkaz kontroluje čísla na každém řádku a uspořádá řádky ve vzestupném nebo sestupném pořadí. Tato organizace zobrazuje menší číslo v horní části vašeho výstupu. V sort
je velmi malý rozdíl a grep
příkaz. sort
příkaz uspořádá data abecedně nebo číselně ve vzestupném nebo sestupném pořadí. grep
příkaz zobrazí nebo skryje pouze požadované informace.
Stručně řečeno, sort
je užitečný příkaz, když potřebujete přečíst velký soubor nebo seznam, který není správně uspořádán, a čtení těchto souborů je obtížné a časově náročné. Chcete-li tento problém vyřešit, použijte sort
příkaz v Linuxu k uspořádání obsahu souborů nebo seznamů v požadovaném formátu, což může pomoci přečíst požadovaný obsah. sort
předpokládá, že data jsou ve formátu ASCII. Existuje několik užitečných možností pro sort
což může změnit chování výstupu. Některé z příkladů jsou uvedeny níže spolu se syntaxí příkazu.
Syntaxe
sort [OPTION]... [FILE]...
sort [OPTION]... --files0-from=F
Příklady
V prvním příkladu použijeme sort
příkaz bez jakýchkoliv možností. To uspořádá každý řádek v abecedním pořadí s ohledem na první písmeno každého řádku. Poznámka:Řádky začínající malým písmenem se zobrazují před řádky začínajícími velkým písmenem. Proto b (malá písmena) jsou na první pozici a B (velká písmena) je na druhé pozici.
$ cat test.txt
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Budhha
ChatrapatiShahuMaharaj
budhha
Ramaai
$ sort test.txt
budhha
Budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
Někdy potřebujeme data v obráceném pořadí, tj. v opačném pořadí než je abecední. Toho lze dosáhnout pomocí -r
možnost, jak je vidět níže:
$ sort test.txt
budhha
Budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
$ sort -r test.txt
Ramaai
MahatmaJyotibaPhule
Dr.B.R.Ambedkar
ChatrapatiShahuMaharaj
Budhha
budhha
Stejně jako třídění podle písmen můžeme sort
i číselně. Možnost -n
uspořádá čísla a obrátí vaše výsledky pomocí -r
volba. Níže pomocí -n
možnost, seřadili jsme čísla vzestupně. Nejmenší číslo je tedy nahoře a největší číslo je dole. Můžeme také obrátit výstup pomocí stejné výše uvedené volby -r
s -n
a zobrazit nejvyšší číslo nahoře.
$ cat numeric.txt
14
04
34
1891
938
378
2356
$ sort -n numeric.txt
04
14
34
378
938
1891
2356
$ sort -nr numeric.txt
2356
1891
938
378
34
14
04
Můžete sort
také konkrétní sloupec. Chcete-li sort
konkrétní sloupec, použijte -k
možnost spolu s číslem sloupce. Upozorňujeme, že v níže uvedeném příkladu jsme použili pouze -k
možnost výběru sloupce, tedy sort
příkaz uspořádá data tak, že vezme v úvahu první číslici druhého sloupce, nikoli celé číslo druhého sloupce. Tedy řádek obsahující číslici 278 se zobrazí před řádkem obsahujícím číslici 28 . Pokud použijeme -n
možnost s -k
(pro výběr sloupce), pak se data zobrazí ve vzestupném pořadí a pořadí bude od nejmenšího k největšímu číslu (které bylo popsáno v druhém příkladu):
$ cat file2.txt
Advika 1
Amit 30
Ajit 28
Abhi 278
Chirag 2
$ sort -k 2 file2.txt
Advika 1
Chirag 2
Abhi 278
Ajit 28
Amit 30
Zde používáme číslo sloupce a číselné řazení dohromady. V následujícím příkladu seřadíme pátý sloupec číselně ve vzestupném pořadí.
$ ls -l
total 0
-rw-r--r-- 1 amwaghma hpcapp 42 Aug 20 19:30 file2.txt
-rw-r--r-- 1 amwaghma hpcapp 31 Aug 20 19:51 months.txt
-rw-r--r-- 1 amwaghma hpcapp 27 Aug 20 19:20 numeric.txt
-rw-r--r-- 1 amwaghma hpcapp 73 Aug 20 19:49 test.txt
$ ls -l | sort -nk 5
total 0
-rw-r--r-- 1 amwaghma hpcapp 27 Aug 20 19:20 numeric.txt
-rw-r--r-- 1 amwaghma hpcapp 31 Aug 20 19:51 months.txt
-rw-r--r-- 1 amwaghma hpcapp 42 Aug 20 19:30 file2.txt
-rw-r--r-- 1 amwaghma hpcapp 73 Aug 20 19:49 test.txt
Často je v některých řádcích mnoho duplicitních záznamů. Ty lze odstranit pomocí -u
volba. V následujícím příkladu zobrazujeme chování -u
možnost odstranění duplicitních záznamů:
$ cat test.txt
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
budhha
Ramaai
Dr.B.R.Ambedkar
$ sort test.txt
budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
$ sort -u test.txt
budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
Existuje jedna zajímavá možnost, pomocí které můžeme zkontrolovat, zda je soubor seřazený nebo ne. Pomocí -c
možnost sort
příkaz hlásí první řádek mimo místo. Pokud je existující soubor již seřazen, pak sort
nedává žádný výstup. Kontroluje každý řádek jeden po druhém, a když najde nějaký řádek neseřazený, poskytne zprávu. V níže uvedeném příkladu -c
možnost sort
příkaz pomáhá zkontrolovat každý řádek. V prvním pokusu porovná první písmeno prvních dvou řádků, které shledá správným, tj. písmeno D a písmeno M jsou řazeny abecedně. Při druhém pokusu prozkoumá první písmeno třetího řádku s počátečním písmenem prvních dvou řádků a zjistí, že třetí řádek není uspořádán abecedně. Proto vytiskne první neodpovídající řádek souboru s číslem řádku.
$ cat test.txt
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
ChatrapatiShahuMaharaj
budhha
Ramaai
$ sort test.txt
budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
$ sort -c test.txt
sort: test.txt:3: disorder: ChatrapatiShahuMaharaj
Stejně jako datové nebo číselné uspořádání můžeme v souboru uspořádat i měsíce. Proveďte to pomocí -M
a změňte pořadí pomocí -r
možnost.
$ cat months.txt
February
December
January
July
$ sort -M months.txt
January
February
July
December
$ sort -Mr months.txt
December
July
February
January
Můžeme také třídit více než jeden soubor současně pomocí příslušných názvů souborů jako argumentů oddělených mezerou. Výstup se tiskne jeden po druhém. Níže jsem použil -n
možnost řazení druhého číselného souboru.
$ cat test.txt numeric.txt
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
ChatrapatiShahuMaharaj
budhha
Ramaai
14
04
34
1891
938
378
2356
$ sort test.txt -n numeric.txt
budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
04
14
34
378
938
1891
2356
Seřazený výstup můžete také přesměrovat do jiného souboru pomocí -o
možnost:
$ sort test.txt > sortfile
OR
$ sort -o sortfile test.txt
$ cat sortfile
budhha
Budhha
ChatrapatiShahuMaharaj
Dr.B.R.Ambedkar
MahatmaJyotibaPhule
Ramaai
Sbalit
Pomocí výše uvedených možností vidíme, že třídění lze provést podle obsahu souboru nebo výstupu libovolného příkazu. Usnadňuje uspořádání velkých souborů dat ve vzestupném nebo sestupném pořadí. Existuje tolik možností, které můžeme použít k přeuspořádání dat všemi možnými způsoby. Nejúžasnější věc je, že jsme v původním souboru neprovedli žádné změny. Proto jsou naše data v bezpečí.
[ Zdarma ke stažení:Cheat sheet pro pokročilé příkazy Linuxu. ]