GNU/Linux >> Znalost Linux >  >> Linux

Sysadmin toolbox:Jak používat příkaz sort ke zpracování textu v Linuxu

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. ]


Linux
  1. Jak používat příkaz sed pro Linux

  2. Jak používat Linuxový příkaz grep

  3. Jak používat příkaz historie v Linuxu

  1. Jak používat příkaz historie Linuxu

  2. Jak používat příkaz id v Linuxu

  3. Jak používat příkaz „screen“ v Linuxu

  1. Jak používat příkaz md5sum v Linuxu

  2. Jak používat příkaz xargs pro Linux

  3. Jak používat Linuxový příkaz tee