sort

Linux.fista
Versio hetkellä 16. marraskuuta 2018 kello 23.30 – tehnyt Javali (keskustelu | muokkaukset) (Kuvausta selkeytetty)
(ero) ← Vanhempi versio | Nykyinen versio (ero) | Uudempi versio → (ero)
Siirry navigaatioon Siirry hakuun

sort on komentoriviohjelma, joka tulostaa tiedoston sisällön tai sille putkitetun tiedon järjestetettynä suuruusjärjestykseen. Esimerkiksi mikäli on tiedosto teksti.txt jonka sisältö on seuraava:

54 ab
54 aa foo
3 gnu
4

Kun tämä tiedosto sitten annetaan sort:ille parametrina, se tulostuu seuraavasti:

$ sort testi.txt
3 gnu
4
54 aa foo
54 ab

Valitsimia

Sopivilla valitsimilla voi muokata sortin toimintaa:

  • -f, --ignore-case: Älä huomioi isojen ja pienten kirjainten eroa.
  • -k, --key=KEYDEF: Järjestää rivit KEYDEF määrittelemän kentän mukaan. Kenttien erotinmerkkinä tyhjätilamerkki.
  • -M, --month-sort: Huomioi kuukaudet seuraavasti: JAN < ... < DEC
  • -n, --numeric-sort: Vertaa merkkijonoja numeroina (jolloin 101>11, ilman tätä päinvastoin).
  • -o, --output=TIEDOSTO: Kirjoita tuloste tiedostoon TIEDOSTO.
  • -r, --reverse: Tuloste käännetyssä järjestyksessä.
  • -R, --random-sort: Järjestä rivit satunnaiseen järjestykseen.
  • --random-source: Satunnaisdatan lähde (esimerkiksi /dev/random tai /dev/urandom).

Lajittelu sarakkeittain

-k, --keydef -valitsimella voi lajitella rivejä sarakkeittain yhden tai useamman sarakkeen perusteella. Lajittelujärjestys voidaan ilmaista sarakekohtaisesti muilla valitsimilla.

Lajittele seitsemäs sarake numerojärjestykseen:

sort -k 7n

Lajittele ensin neljännen ja sitten viidennen sarakkeen perusteella:

sort -k 4 -k 5

Lajittele ensin neljännen ja sitten viidennen sarakkeen perusteella. Viides sarake numerojärjestyksessä:

sort -k 4 -k 5n

Lajittelu kuukauden perusteella

Sortin -M-valitsimella voi lajitella kuukauden perusteella. Oletusarvoisesti valitsin toimii vain silloin, kun kuukaudet on kirjoitettu isoilla kirjaimilla: JAN, FEB, MAR, jne...

Avuksi voi ottaa f-valitsimen, joka käskee Sort-toimintoa sivuuttamaan kirjainkoon:

sort -f -M

Jos sarakkeessa 6 on vuosiluku ja sarakkeessa 5 kuukausi, vuoden ja kuukauden perusteella lajittelu tapahtuisi näin:

sort -f -k 6n -k 5M

Katso myös