Linuxi sortimiskäsu reeglid ja näited

Andmed a Linux tekstifaili saab sortida käsuga sort, kui iga element on mingil viisil piiritletud. Sageli kasutatakse eraldatud teabe eraldajana koma.

Sülearvutiga töötav ärianalüütik
David Lees / Iconica / Getty Images

Sorteerimise põhireeglid

Sorteerimiskäsk korraldab tekstifailis read ümber, et järjestada read numbriliselt ja tähestikuliselt. Sortimiskäsu vaikereeglid on järgmised:

  • Tekst, mis algab numbriga, kuvatakse enne teksti, mis algab tähega; väiksemad numbrid sorteerige kõigepealt.
  • Tekst, mis algab tähega, mis ilmub tähestikus varem kui teiste tekstikirjete esimene täht, sorteeritakse enne teksti, mis algab tähega, mis ilmub tähestikus hiljem.
  • Millal tekst algab sama tähe suur- ja väiketähtedega, kõigepealt sorteeritakse väiketäht.

Tekstifaili sortimine

Eraldatud Linuxi faili ridade sortimiseks kasutage sortimist käsk nagu nii:

sorteeri -k2 tabel1.txt

See käsk sorteerib faili tabel1.txt teisest veerust algavate märkide järgi (k2 viitab teisele veerule). Eeldades, et sisendfaili sisu on:

1, Justin, Timberlake, pealkiri 545, hind 7,30 dollarit

2, Taylor, Swift, pealkiri 723, hind 7,90 dollarit
3, Mick, Jagger, pealkiri 610, hind 7,90 dollarit
4, Lady, Gaga, pealkiri 118, hind 7,30 dollarit
5, Johnny, sularaha, pealkiri 482, hind 6,50 dollarit
6, Elvis, Presley, pealkiri 335, hind 7,30 dollarit
7, John, Lennon, pealkiri 271, hind 7,90 dollarit
8, Michael, Jackson, tiitel 373, hind 5,50 dollarit

Kuna selle näite teine ​​veerg sisaldab eesnimesid, järjestatakse sorteeritud väljund teises veerus oleva iga inimese eesnime esitähe järgi, nagu allpool näidatud:

6, Elvis, Presley, pealkiri 335, hind 7,30 dollarit
7, John, Lennon, pealkiri 271, hind 7,90 dollarit
5, Johnny, sularaha, pealkiri 482, hind 6,50 dollarit
1, Justin, Timberlake, pealkiri 545, hind 7,30 dollarit
4, Lady, Gaga, pealkiri 118, hind 7,30 dollarit
8, Michael, Jackson, tiitel 373, hind 5,50 dollarit
3, Mick, Jagger, pealkiri 610, hind 7,90 dollarit
2, Taylor, Swift, pealkiri 723, hind 7,90 dollarit

Kui sorteerite faili -k3 (kasutades veerust algavat rea sisu 3, veerus Perekonnanimi), väljund on:

5, Johnny, sularaha, pealkiri 482, hind 6,50 dollarit
4, Lady, Gaga, pealkiri 118, hind 7,30 dollarit
8, Michael, Jackson, tiitel 373, hind 5,50 dollarit
3, Mick, Jagger, pealkiri 610, hind 7,90 dollarit
7, John, Lennon, pealkiri 271, hind 7,90 dollarit
6, Elvis, Presley, pealkiri 335, hind 7,30 dollarit
2, Taylor, Swift, pealkiri 723, hind 7,90 dollarit
1, Justin, Timberlake, pealkiri 545, hind 7,30 dollarit

ja -k5 koostab hinna järgi sorteeritud nimekirja:

4, Lady, Gaga, pealkiri 118, hind 7,30 dollarit
7, John, Lennon, pealkiri 271, hind 7,90 dollarit
6, Elvis, Presley, pealkiri 335, hind 7,30 dollarit
8, Michael, Jackson, tiitel 373, hind 5,50 dollarit
5, Johnny, sularaha, pealkiri 482, hind 6,50 dollarit
1, Justin, Timberlake, pealkiri 545, hind 7,30 dollarit
3, Mick, Jagger, pealkiri 610, hind 7,90 dollarit
2, Taylor, Swift, pealkiri 723, hind 7,90 dollarit

Oota, see ei töötanud, eks? Hinna järgi sortimise asemel sorteeris käsk nimekirja pealkirja numbri järgi. Miks? Noh, kui sellele pole antud eraldajat, mille juures see peaks iga rea ​​veergudeks jaotama, kasutab see tühikuid. Kuna iga pealkirjakirje keskel on tühik, muutub iga kirje neljas veerg sõnaks "Pealkiri" ja viies veerg pealkirja numbriks.

Kasutage sortimise eraldaja määramiseks lippu -t. See määrab täpselt, kus käsk veerud eraldab.

sorteeri -t, -k5 tabel1.txt

See annab soovitud tulemuse:

8, Michael, Jackson, tiitel 373, hind 5,50 dollarit
5, Johnny, sularaha, pealkiri 482, hind 6,50 dollarit
1, Justin, Timberlake, pealkiri 545, hind 7,30 dollarit
4, Lady, Gaga, pealkiri 118, hind 7,30 dollarit
6, Elvis, Presley, pealkiri 335, hind 7,30 dollarit
2, Taylor, Swift, pealkiri 723, hind 7,90 dollarit
3, Mick, Jagger, pealkiri 610, hind 7,90 dollarit
7, John, Lennon, pealkiri 271, hind 7,90 dollarit

Tavaliselt soovite määrata eraldaja. See hoiab ära soovimatu segaduse ja ebatäpsed tulemused. See kehtib eriti suuremate failide puhul, mis ei pruugi alati ilmselgelt valed olla.

Pöörake sortimist

The -r valik muudab sortimise vastupidiseks. Näiteks kasutades ülaltoodud tulemusi:

sorteeri -r -t, -k5 tabel1.txt

annab:

7, John, Lennon, pealkiri 271, hind 7,90 dollarit
3, Mick, Jagger, pealkiri 610, hind 7,90 dollarit
2, Taylor, Swift, pealkiri 723, hind 7,90 dollarit
6, Elvis, Presley, pealkiri 335, hind 7,30 dollarit
4, Lady, Gaga, pealkiri 118, hind 7,30 dollarit
1, Justin, Timberlake, pealkiri 545, hind 7,30 dollarit
5, Johnny, sularaha, pealkiri 482, hind 6,50 dollarit
8, Michael, Jackson, tiitel 373, hind 5,50 dollarit

Salvestage sorteeritud fail

Faili sortimine ei salvesta seda. Sorteeritud loendi faili salvestamiseks kasutage ümbersuunamisoperaatorit:

sorteeri -k6 tabel1.txt > test_uus.txt

kus test_uus.txt on uus fail.

Vooväljundi sorteerimine

Sorteerimiskäsku saate rakendada ka voo väljundile, näiteks toruoperaatorile:

ls -n | sorteerida -t, -k5

See sorteerib poolt loodud faililoendi väljundi ls käsk faili suuruse järgi, alustades suurimatest failidest. The -n operaator määrab pigem numbrilise sortimise kui tähestikulise järjestuse.