Vyhledávání na webu

14 Užitečné příklady linuxového příkazu „sort“ – část 1


Příkaz ‚sort‘ je linuxový program používaný pro tisk řádků vstupních textových souborů a zřetězení všech souborů v seřazeném pořadí. Příkaz Sort zabere prázdné místo jako oddělovač polí a celý vstupní soubor jako klíč řazení. Je důležité si všimnout, že příkaz sort ve skutečnosti netřídí soubory, ale pouze tiskne seřazený výstup, dokud výstup nepřesměrujete.

Tento článek se zaměřuje na hluboký vhled do příkazu „sort“ v Linuxu se 14 užitečnými praktickými příklady, které vám ukazují, jak používat příkaz sort v Linuxu.

1. Vytvoření textového souboru se zadaným obsahem

Nejprve vytvoříme textový soubor s názvem 'tecmint.txt', který bude použit pro spouštění příkladů příkazu 'sort' v našem pracovním adresáři pro tuto úlohu je ' /home/$USER/Desktop/tecmint'.

Volba „-e“ v níže uvedeném příkazu umožňuje interpretaci zpětného lomítka a /n říká příkazu echo, aby zapsal každý řetězec na nový řádek.

echo -e "computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop" > tecmint.txt

2. Zobrazit obsah souboru

Než začneme s příkazem ‚sort‘, podívejme se na obsah souboru a na to, jak vypadá pomocí následujícího příkazu cat.

cat tecmint.txt

3. Třídění obsahu souboru

Příkaz „sort tecmint.txt“ se používá k přeskupení řádků v souboru ve vzestupném abecedním pořadí, pokud existují nějaké duplicitní řádky, zachová si jednu kopii každého jedinečného řádku.

sort tecmint.txt

Poznámka: Výše uvedený příkaz netřídí obsah textového souboru, ale zobrazuje pouze seřazený výstup na terminálu.

4. Přesměrování tříděného výstupu do nového souboru

Následující příkaz se používá k řazení řádků textového souboru „tecmint.txt“ v abecedním pořadí a poté přesměruje setříděný výstup do nového souboru s názvem „sorted.txt “, což znamená, že původní soubor zůstane nezměněn a seřazený obsah se uloží do samostatného souboru.

Pro ověření obsahu použijte příkaz cat.

sort tecmint.txt > sorted.txt
cat sorted.txt

5. Třídění obsahu souborů v opačném pořadí

Následující příkaz se používá k řazení řádků textového souboru „tecmint.txt“ v opačném pořadí, což znamená, že seřadí řádky v sestupném abecedním pořadí a setříděný výstup je pak přesměrován na nový soubor s názvem „reversesorted.txt

sort -r tecmint.txt > reversesorted.txt
cat reversesorted.txt

6. Uložení seznamu souborů a adresářů

Následující příkaz se používá k výpisu obsahu domovského adresáře uživatele („/home/$USER“) v podrobném, dlouhém zobrazení pomocí příkazu ls a poté přesměruje tento výpis adresáře na textový soubor s názvem „lsl.txt“ umístěný na ploše uživatele, konkrétně v adresáři „tecmint“.

ls -l /home/$USER > /home/$USER/Desktop/tecmint/lsl.txt
cat lsl.txt

Nyní prozkoumáme příklady řazení obsahu na základě jiných polí, než jsou výchozí počáteční znaky.

7. Třídění ‚Obsahu souboru na základě druhého pole

Následující příkaz se používá k řazení obsahu souboru „lsl.txt“ na základě hodnot ve druhém poli každého řádku. Možnost '-n' označuje číselné řazení, přičemž druhé pole je považováno za čísla spíše než za text.

Volba '-k2' určuje, že chceme třídit na základě druhého pole. Spuštěním tohoto příkazu získáte seřazený seznam řádků v „lsl.txt“, přičemž kritérii řazení jsou číselné hodnoty ve druhém poli každého řádku.

sort -nk2 lsl.txt

8. Třídění obsahu souboru na základě devátého pole

Následující příkaz se používá k řazení řádků v souboru „lsl.txt“ na základě hodnot v devátém poli každého řádku ve vzestupném pořadí. Volba '-k9' určuje, že řazení by mělo být provedeno na základě devátého pole.

sort -k9 lsl.txt

9. Seřadit soubory podle velikosti souboru

Následující příkaz kombinuje příkazy 'ls' a 'sort' k vypsání obsahu domovského adresáře uživatele ve formátu dlouhého výpisu a poté převede výpis adresáře do 'sort -nk5', který seřadí seznam na základě hodnot v pátém sloupci, který představuje velikosti souborů.

ls -l /home/$USER | sort -nk5

10. Odstranění duplicitních řádků v souboru

Následující příkaz seřadí řádky v souboru „tecmint.txt“ ve vzestupném abecedním pořadí a odstraní všechny duplicitní řádky pomocí možnosti '-u', což znamená „unique,“ a zajišťuje, že v setříděném výstupu zůstanou zachovány jedinečné řádky.

cat tecmint.txt
sort -u tecmint.txt

Dosavadní pravidla (co jsme pozorovali):

  • Řádky začínající čísly jsou v seznamu preferovány a leží nahoře, dokud není uvedeno jinak (-r).
  • Řádky začínající malými písmeny jsou v seznamu preferovány a leží nahoře, dokud není uvedeno jinak (-r).
  • Obsah je uveden na základě výskytu abeced ve slovníku, dokud není uvedeno jinak (-r).
  • Příkaz Sort standardně zachází s každým řádkem jako s řetězcem a poté jej seřadí v závislosti na výskytu abeced ve slovníku (upřednostňuje se numerická; viz pravidlo – 1), dokud není uvedeno jinak.

11. Přesměrování výpisu adresáře do souboru

Následující příkaz vypíše obsah domovského adresáře uživatele v dlouhém formátu, včetně skrytých souborů a adresářů, a poté přesměruje výpis adresáře do textového souboru s názvem „lsla.txt“ umístěného na ploše uživatele v adresář „tecmint“.

ls -lA /home/$USER > /home/$USER/Desktop/tecmint/lsla.txt
cat lsla.txt

Ti, kteří jsou obeznámeni s příkazem ls, chápou, že 'ls -lA' je ekvivalentní příkazu 'ls -l' plus skryté soubory. V důsledku toho bude většina obsahu v těchto dvou příkazech stejná.

12. Třídění obsahu souborů

Následující příkaz seřadí obsah dvou textových souborů, 'lsl.txt' a 'lsla.txt', ve vzestupném abecedním pořadí a poté zkombinuje a zobrazí seřazený obsah v terminál.

sort lsl.txt lsla.txt

Všimněte si opakování souborů a složek.

13. Odstranění duplicitních řádků v souboru

Následující příkaz sloučí a seřadí obsah dvou textových souborů, 'lsl.txt' a 'lsla.txt', ve vzestupném abecedním pořadí, přičemž odstraní duplicitní řádky pomocí Volba '-u', která zajišťuje zachování jedinečných řádků v setříděném výstupu.

sort -u lsl.txt lsla.txt

Všimněte si, že duplikáty byly z výstupu vynechány. Navíc můžete výstup uložit do nového souboru přesměrováním.

14. Třídění výstupu podle více polí pomocí vlastního oddělovače

Následující příkaz kombinuje příkazy 'ls' a 'sort' k vypsání obsahu domovského adresáře uživatele v dlouhém formátu a poté přesměruje výpis adresáře do '< příkazsort', který třídí výstup na základě konkrétních sloupců a polí.

ls -l /home/$USER | sort -t "," -nk2,5 -k9

Zde je rozpis příkazu:

  • -t "," – určuje, že jako oddělovač pole se používá čárka ("").
  • -nk2,5 – označuje řazení podle číselné hodnoty ve sloupcích 2 až 5, které obvykle představují oprávnění a podrobnosti o vlastnictví.
  • -k9 – dále seřadí výsledek na základě devátého sloupce, který představuje velikosti souborů.

To je prozatím vše. V příštím článku se pro vás ponoříme do podrobnějších příkladů příkazu sort.

Sdílejte, komentujte, lajkujte a pomozte nám oslovit širší publikum.