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