Úvod
sort
command je nástroj pro třídění obsahu souborů a tisk výsledku na standardní výstup. Změna pořadí obsahu souboru číselně nebo abecedně a uspořádání informací ve vzestupném nebo sestupném pořadí zlepšuje čitelnost.
V tomto tutoriálu se naučíte používat Linux sort
a podívejte se na užitečné příklady.
Předpoklady
- Systém se systémem Linux.
- Přístup k terminálu.
Linux syntaxe řazení
sort
příkaz má následující syntaxi:
sort [options] filename
Spuštění sort
příkaz bez [options]
vypíše obsah souboru a použije výchozí pravidla řazení pro aktuální národní prostředí.
Hlavní pravidla jsou:
- Řádky začínající číslem přejděte před řádky začínající písmenem , uspořádané vzestupně objednávka (1-10).
- Řádky začínající písmeny jsou seřazeny vzestupně abecední pořadí (A-Z).
Například následující soubor má více náhodných řádků:
Spusťte sort
pro uspořádání obsahu souboru výchozím způsobem:
Výše uvedený příklad ukazuje, jak sort
příkaz ve výchozím nastavení uspořádá řádky, když nejsou zadány žádné možnosti.
Možnosti řazení v Linuxu
Zadejte možnost pro změnu sort
pravidla řazení příkazů. Nejpoužívanější možnosti jsou uvedeny v tabulce níže:
Formulář s krátkou možností | Dlouhý formulář možnosti | Popis |
---|---|---|
-b | --ignore-leading-blanks | Způsobuje sort ignorovat úvodní mezery. |
-d | --dictionary-order | Způsobuje sort brát v úvahu pouze mezery a alfanumerické znaky. |
-f | --ignore-case | Ignoruje výchozí pravidlo řazení velkých a malých písmen a před porovnáním změní všechna malá písmena na velká. |
/ | --files0-from=F | Čte vstup ze souborů určených parametrem NUL -ukončená jména v zadaném F soubor. Pokud F je - , sort čte jména ze standardního vstupu. |
-M | --month-sort | Třídí řádky podle měsíců (leden–prosinec). |
-h | --human-numeric-sort | Porovnává pro člověka čitelná čísla (např. 2K 1G). |
-n | --numeric-sort | Porovnává data podle řetězcových číselných hodnot. |
-R | --random-sort | Třídí data podle náhodného hash klíčů, ale seskupuje identické klíče dohromady. |
/ | --random-source=FILE | Získá náhodné bajty ze zadaného FILE . |
-r | --reverse | Obrátí výsledky porovnání. |
/ | --sort=WORD | Seřadit data podle zadaného WORD :obecný-číselný -g , člověk-numerický -h , měsíc -M , číselné -n , náhodné -R , verze -V . |
-c | --check, --check=diagnose-first | Zkontroluje, zda je vstup již seřazen, ale nesetřídí jej. |
/ | --debug | Označuje část řádku použitou k řazení. |
-k | --key=KEYDEF | Seřaďte data pomocí zadaného KEYDEF , který udává umístění a typ klíče. |
-m | --merge | Způsobuje sort pro sloučení již seřazených souborů. |
-o | --output=FILE | Přesměruje výstup na FILE namísto tisku na standardní výstup. |
-t | --field-separator=SEP | Používá zadaný SEP oddělovač namísto přechodu neprázdného na prázdný. |
-z | --zero-terminated | Způsobí, že řazení použije NUL jako oddělovač řádku namísto znaku nového řádku. |
/ | --help | Zobrazí soubor nápovědy s úplným seznamem možností a ukončí se. |
/ | --version | Vypíše verzi programu a ukončí se. |
Příklady řazení v Linuxu
Níže jsou uvedeny příklady použití sort
příkaz k uspořádání obsahu souboru různými způsoby.
Příklad 1:Uložit výstup do souboru
sort
příkaz pouze zobrazí obsah souboru po jeho uspořádání, ale nezmění soubor. Nicméně -o
umožňuje uložit sort
výstup příkazu do souboru.
Například následující příkaz seřadí data v default.txt a uloží výstup do sorted.txt soubor:
sort -o sorted.txt default.txt
Spuštěním cat se zobrazí obsah nového souboru.
Další způsob, jak uložit sort
výstup příkazu má přesměrovat výstup do souboru:
sort default.txt > sorted.txt
Příklad 2:Kontrola řazení v souboru
Zadejte -c
možnost zkontrolovat, zda byl obsah souboru již roztříděn. Pokud je obsah již setříděn, z sort
nebude žádný výstup příkaz.
Když však sort
najde neseřazený řádek, vydá zprávu, že první řádek není na místě.
Například:
sort -c default.txt
Výstupem příkazu je zpráva oznamující číslo a obsah prvního neseřazeného řádku.
Příklad 3:Seřadit více souborů
Existují dva způsoby, jak třídit více souborů:
1. Uveďte názvy souborů jako argumenty oddělené mezerou.
Seřaďte více souborů současně zadáním příslušných názvů souborů jako argumentů oddělených mezerami. Obsah souborů se spojí dohromady, roztřídí a vytiskne na standardní výstup.
Například:
sort default1.txt default2.txt
Příkaz zřetězí, seřadí a vytiskne obsah obou souborů.
2. Propojte find
výstup příkazu do sort
.
Dalším způsobem, jak třídit více souborů současně, je převést výstup příkazu find do sort
a použijte --files0-from=
možnost v sort
příkaz.
Zadejte -print0
možnost v find
pro ukončení názvu souboru NUL
a ujistěte se, že program správně čte seznam souborů.
Například:
find -name "default?.txt" -print0 | sort --files0-from=-
Výše uvedený příklad zřetězí a seřadí default1.txt a default2.txt soubory.
Příklad 4:Řazení podle polí
Ve výchozím nastavení sort
porovná obsah celého řádku a rozhodne, jak jej seřadit. Chcete-li porovnat podle podmnožiny dat, určete, která pole chcete porovnávat, pomocí -k
možnost.
-k
volba má následující syntaxi:
-k [ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .Cend ] ][ Modifier ] ]
FStart
. Začátek řádku.CStart
. První sloupec v poli.Fend
. Konec řádku.CEnd
. Poslední sloupec pole.
Třídicí klíč obsahuje všechny znaky začínající polem určeným FStart
proměnná a sloupec určený CStart
variabilní. Klíč končí polem určeným FEnd
a sloupec určený CEnd
.
Nezadání Fend
předpokládá poslední znak řádku jako konec. Bez zadání CEnd
, poslední znak v FEnd
pole se předpokládá.
Pokud je mezi poli mezera, sort
považuje je za samostatná pole.
Například řádky v následujícím souboru obsahují tři pole:
Seřaďte data na základě druhého pole spuštěním:
sort -k 2,2 school.txt
Příkaz seřadí data podle druhého pole a ignoruje první pole.
Příklad 5:Řazení v opačném pořadí
Použijte -r
možnost seřadit data v obráceném pořadí, tj. v obráceném abecedním pořadí nebo od nejvyššího po nejnižší číslo.
Například následující soubor je řazen podle výchozích pravidel řazení:
sort default.txt
Určení -r
volba obrátí pořadí řazení:
sort -r default.txt
Příklad 6:Odstraňte duplicitní položky
-u
možnost umožňuje sort
k odstranění duplicitních záznamů ze souboru. Například následující soubor má několik duplicitních položek:
Zadání -u
volba třídí data a odstraňuje duplicitní řádky:
sort -u test.txt
Příklad 7:Řazení podle měsíců
Zadejte -M
možnost uspořádat data podle měsíců uvedených v souboru.
Chcete-li předvést řazení podle měsíců, vytvořte soubor naplněný výstupem příkazu ls:
ls -l > month-sorting.txt
Seřaďte data z ls -l
výstup po měsících spuštěním následujícího příkazu:
sort -Mk6 month-sorting.txt
Příkaz seřadí obsah souboru podle šestého pole obsahující měsíc vytvoření souboru .
Příklad 8:Náhodné řazení dat
Použijte -R
možnost náhodného uspořádání dat bez použití jakýchkoli kritérií řazení.
Například následující soubor obsahuje několik číselně seřazených řádků:
Smíchejte pořadí řádků s následujícím příkazem:
sort -R ordered.txt
Výstup ukazuje, že data jsou nyní náhodně tříděna.
Příklad 9:Zadejte oddělovač
sort
odděluje pole v řádku pomocí mezer (mezery nebo tabulátory) jako oddělovače polí. Zadejte -t
možnost změnit oddělovač pole na jiný znak.
Například následující soubor obsahuje několik polí, včetně jména osoby, pracovní pozice a místa bydliště:
Řazení souboru podle místa bydliště bez změny oddělovače nefunguje protože některá města mají uprostřed názvu mezeru. Mezera umožňuje sort
interpretovat název města jako dvě pole namísto jednoho.
Změňte oddělovač na čárku (,
), abyste správně seřadili obsah souboru:
sort -t, -k4 school.txt
Změnou oddělovače získáte požadovaný výstup.
Příklad 10:Seřazení výstupu streamu
Další způsob, jak zadat vstup do sort
příkaz je použít roura (|
) operátor. Zařazení do sort
umožňuje uspořádat výstup jiného příkazu a volitelně uložit výsledky do souboru.
Následující příklad ukazuje, jak vytvořit kanál ls
výstup příkazu do sort
a uspořádejte obsah podle velikosti souboru:
ls -l /home/$USER | sort -nk5
-nk5
možnosti určují numerické řazení v pátém poli .