Skip to content

Použití příkazu Linux Sort

2 de Srpen de 2021
187920131 56a5aa595f9b58b7d0dde2cf

Data v textovém souboru Linux lze řadit pomocí příkazu sort, pokud je každý prvek nějakým způsobem oddělen. Čárka se často používá jako oddělovač oddělovaných informací.

Základní pravidla pro třídění

Příkaz sort uspořádá řádky v textovém souboru, aby seřadily řádky číselně a abecedně. Výchozí pravidla pro příkaz sort jsou:

  • Text začínající číslicí se zobrazí před textem, který začíná písmenem; nižší čísla nejprve seřaďte.
  • Text, který začíná písmenem, které se objeví v abecedě dříve než první písmeno jiných textových položek, je seřazen před textem, který začíná písmenem, které se objeví později v abecedě.
  • Když text začíná velkými a malými instancemi stejného písmene, je nejprve seřazena instance malých písmen.

Seřadit textový soubor

Chcete -li seřadit řádky v souboru Linux s oddělovači, použijte příkaz sort takto: sort -k2 table1.txt

Tento příkaz třídí soubor tabulka1.txt podle znaků začínajících ve druhém sloupci (k2 odkazuje na druhý sloupec). Za předpokladu, že obsah vstupního souboru je: 1, Justin, Timberlake, název 545, cena 7,30 $
2, Taylor, Swift, název 723, cena 7,90 $
3, Mick, Jagger, hlava 610, cena 7,90 $
4, Lady, Gaga, Hlava 118, Cena 7,30 $
5, Johnny, hotovost, hlava 482, cena 6,50 $
6, Elvis, Presley, hlava 335, cena 7,30 $
7, John, Lennon, hlava 271, cena 7,90 $
8, Michael, Jackson, hlava 373, cena 5,50 $

Protože druhý sloupec v tomto příkladu obsahuje křestní jména, seřazený výstup je uspořádán podle prvního písmene křestního jména každého jednotlivce ve druhém sloupci, jak je znázorněno níže: 6, Elvis, Presley, Title 335, Price $ 7,30
7, John, Lennon, hlava 271, cena 7,90 $
5, Johnny, hotovost, hlava 482, cena 6,50 $
1, Justin, Timberlake, hlava 545, cena 7,30 $
4, Lady, Gaga, Hlava 118, Cena 7,30 $
8, Michael, Jackson, hlava 373, cena 5,50 $
3, Mick, Jagger, hlava 610, cena 7,90 $
2, Taylor, Swift, název 723, cena 7,90 $

Pokud soubor seřadíte pomocí -k3 (pomocí obsahu řádku začínajícího ve sloupci 3(sloupec Příjmení), výstup je: 5, Johnny, Hotovost, Hlava 482, Cena 6,50 $
4, Lady, Gaga, Hlava 118, Cena 7,30 $
8, Michael, Jackson, hlava 373, cena 5,50 $
3, Mick, Jagger, hlava 610, cena 7,90 $
7, John, Lennon, hlava 271, cena 7,90 $
6, Elvis, Presley, hlava 335, cena 7,30 $
2, Taylor, Swift, název 723, cena 7,90 $
1, Justin, Timberlake, hlava 545, cena 7,30 $

a -k5 vytvoří seznam seřazený podle ceny: 4, Lady, Gaga, Hlava 118, Cena 7,30 $
7, John, Lennon, hlava 271, cena 7,90 $
6, Elvis, Presley, hlava 335, cena 7,30 $
8, Michael, Jackson, hlava 373, cena 5,50 $
5, Johnny, hotovost, hlava 482, cena 6,50 $
1, Justin, Timberlake, hlava 545, cena 7,30 $
3, Mick, Jagger, hlava 610, cena 7,90 $
2, Taylor, Swift, název 723, cena 7,90 $

Počkejte, to nefungovalo, že? Místo řazení podle ceny příkaz setřídil seznam podle čísla titulu. Proč? Pokud není uveden oddělovač, ve kterém by měl rozdělit každý řádek na sloupce, používá mezery. Protože je uprostřed každé položky názvu mezera, sloupec čtyři v každé položce se stane slovem „Název“ a sloupec pět se stane číslem titulu. Pomocí příznaku -t určete oddělovač pro řazení. Toto řídí přesně to, kde příkaz odděluje sloupce. třídit -t, -k5 tabulka1.txt

Výsledkem je požadovaný výsledek: 8, Michael, Jackson, hlava 373, cena 5,50 $
5, Johnny, hotovost, hlava 482, cena 6,50 $
1, Justin, Timberlake, hlava 545, cena 7,30 $
4, Lady, Gaga, Hlava 118, Cena 7,30 $
6, Elvis, Presley, hlava 335, cena 7,30 $
2, Taylor, Swift, název 723, cena 7,90 $
3, Mick, Jagger, hlava 610, cena 7,90 $
7, John, Lennon, hlava 271, cena 7,90 $

Obvykle budete chtít zadat oddělovač. Předchází nežádoucímu zmatku a nepřesným výsledkům. To platí zejména pro větší soubory, které nemusí být vždy zjevně nesprávné.

Obrátit řazení

The -r volba obrátí řazení. Například pomocí výše uvedených výsledků: sort -r -t, -k5 table1.txt

výnosy: 7, John, Lennon, hlava 271, cena 7,90 $
3, Mick, Jagger, hlava 610, cena 7,90 $
2, Taylor, Swift, název 723, cena 7,90 $
6, Elvis, Presley, hlava 335, cena 7,30 $
4, Lady, Gaga, Hlava 118, Cena 7,30 $
1, Justin, Timberlake, hlava 545, cena 7,30 $
5, Johnny, hotovost, hlava 482, cena 6,50 $
8, Michael, Jackson, hlava 373, cena 5,50 $

Uložte seřazený soubor

Třídění souboru jej neuloží. K uložení seřazeného seznamu do souboru použijte operátor přesměrování: sort -k6 table1.txt> test_new.txt

kde test_new.txt je nový soubor.

Seřadit výstup streamu

Příkaz sort můžete také použít na výstup proudu, jako je například operátor kanálu: ls -n | třídit -t, -k5

To seřadí výstup seznamu souborů generovaného ls příkaz podle velikosti souboru, počínaje největšími soubory. The -n operátor určuje spíše číselné řazení než abecední.