Manpages

NIMI

sort − järjestää tekstitiedostojen rivejä

YLEISKATSAUS

sort [−cmus] [−t erotin] [−o tulostetiedosto] [−T tilapäishakemisto] [−bdfiMnr] [+PAIKKA1 [−PAIKKA2]] [−k PAIKKA1[,PAIKKA2]] [tiedosto...]
sort
{−−help,−−version}

KUVAUS

Tätä dokumenttia ei enää ylläpidetä ja se voi olla virheellinen tai puutteellinen. Texinfo-dokumentit ovat nykyisin virallista ohjeistoa.

Tämä käsikirja kuvaa GNU:n sort-versiota. sort järjestää, yhdistää ja vertailee kaikki tekstirivit, jotka luetaan annetuista tiedostosta tai vakiosyötteestä, jos lähdetiedostoa ei ole määritelty. Tiedosto, jonka nimenä on ’-’, tarkoittaa vakiosyötettä. sort tulostaa oletusarvoisesti tuloksen vakiotulosteeseen.

sort-käskyllä on kolme toimintatilaa: järjestä (oletuksena), yhdistä sekä tarkista, että annetut rivit on jo järjestetty. Seuraavat parametrit muuttavat toimintatilaa.

−c

Tarkistaa ovatko annetut tiedostot jo järjestetty. Jos ne eivät ole vielä kokonaan järjestettyjä, tulosta virheilmoitus ja lopeta arvolla 1.

−m

Yhdistä annetut tiedostot järjestämällä ne ryhmänä. Jokaisen syötetiedoston tulisi olla jo järjestetty. Yhdistämisen sijaan voidaan aina käyttää järjestämistä. Yhdistäminen on mahdollistettu, koska se on nopeampaa kuin järjestäminen.

Kahden rivin keskinäinen vertailu tapahtuu seuraavasti. Jos yksikin avainkenttä (key field) on määritelty, sort vertaa jokaista kenttäparia siinä järjestyksessä, mitä komentorivillä on määrätty huomioiden järjestämistä koskevat komentorivivivut. Kenttien keskinäistä vertailua jatketaan, kunnes kahden rivin kenttien välillä havaitaan ero tai kenttiä ei ole enää jäljellä.

Jos jokin yleisistä (global) vivuista Mbdfinr on annettu, mutta avainkenttiä ei ole määritelty, sort vertailee kokonaisia rivejä yleisten vipujen määräämällä tavalla.

Lopuksi viimeisenä keinona, jos kaikki avaimet ovat yhtä suuria (tai kun yhtään järjestysvipua ei ole annettu) sort vertailee rivejä tavu tavulta koneen tavuille antaman järjestyksen mukaisesti. "Viimeinen keino" -vertailu noudattaa yleistä vipua -r. −s (stable) -vipu poistaa "Viimeinen keino" -vertailumenetelmän käytöstä. Tästä seuraa, että rivit, joiden kaikki kentät ovat vertailussa yhtä suuret jätetään alkuperäiseen järjestykseen. Jos kenttiä tai yleisiä vipuja ei ole määritelty, −s -vivulla ei ole mitään vaikutusta.

GNU sort-käskyllä ei ole mitään rajoitusta sen suhteen, kuinka pitkiä syötteenä olevat rivit voivat olla tai kuinka monta tavua ne voivat sisältää. Lisäksi, jos syötetiedoston viimeinen tavu ei ole uusirivi-merkki (newline), GNU sort lisää sen automaattisesti.

Jos ympäristömuuttuja TMPDIR on asetettu, sort käyttää sen määräämää hakemistoa tilapäistiedostojen tallentamiseen oletushakemiston /tmp sijasta. −T tilapäishakemisto vipu on toinen tapa, jolla voidaan määritellä hakemisto, jossa säilytetään tilapäistiedostoja. Jos se on annettu, TMPDIR ympäristömuuttujan määräämää hakemistoa ei käytetä.

Seuraavat vivut vaikuttavat tulosteena annettavien rivien järjestykseen. Ne voidaan määritellä yleisesti tai ne voivat olla avainkenttäkohtaisia. Jos avainkenttiä ei ole määritelty, yleiset vivut koskevat koko rivin vertailuja. Muutoin yleiset vivut koskevat niitä kenttiä, joille ei ole erikseen määritelty kenttäkohtaisia vipuja.

−b

Jätä huomiotta rivien alussa oleva tyhjä (blanks) tila etsiessäsi avaimia, joiden mukaisesti järjestäminen tehdään.

−d

Järjestä "sanakirjajärjestykseen". Vertailtaessa avainkenttiä vain kirjaimet, numerot ja tyhjät merkit (blanks) huomioidaan.

−f

Huomioi pienet kirjaimet kuin ne olisivat vastaavia isoja kirjaimia. Esimerkiksi "b" järjestetään samaan tapaan kuin "B".

−i

Jätä huomioimatta merkit, jotka ovat ASCII-alueen 040-1076 (oktaalimuodossa, päädyt mukaan lukien) ulkopuolella.

−M

Vertaile kuukausina. Kentän kolme ensimmäistä ei-tyhjää (blank) merkkiä muunnetaan isokirjaimisiksi ja käytetään näitä rivien välisissä vertailuissa. Esimerkiksi englanninkieliset kuukauden nimet vertaillaan järjestyksessä

"JAN" < "FEB" < ... < "DEC". Virheelliset kuukauden nimet käsitellään lajittelussa pienempinä kuin "JAN".

−n

Määrää, että lajitteluavain koostuu rivin ensimmäisessä kentässä sijaitsevasta numeerisesta merkkijonosta. Rivien järjestys riippuu numeerisen merkkijonon (luvun) arvosta. Merkkijono koostuu alussa olevasta tyhjästä tilasta, valinnaisesta − merkistä, nollasta tai usemmasta numerosta, jota seuraa valinnainen desimaalipiste sekä nolla tai useampia numeroita.

−r

Kääntää vertailun tuloksen siten, että suurempiavaimiset rivit esiintyvät aikaisemmin tulosteessa kuin pienempiavaimiset.

Muut vivut ovat:
−o tulostetiedosto

Kirjoita tuloste tulostetiedostoon eikä vakiotulosteeseen. Jos tulostetiedosto on toinen syötetiedostoista, sort kopioi sen sisällön tilapäistiedostoon ennen järjestämistä ja tulosteen kirjoittamista tulostetiedostoon.

−t erotin

Käytä merkkiä erotin kenttäerottimena erottamaan järjestämisavaimet jokaisella rivillä. Oletusarvoisesti kentät erotetaan toisistaan tyhjällä (blanks) merkillä, joka sijaitsee kahden ei-tyhjän merkin välissä. Eli, jos annetaan syöte " foo bar", sort katkaisee sen kenttiin "foo" ja "bar". Kenttäerottimen ei katsota kuuluvan erotinta edeltävään eikä seuraavaan kenttään.

−u

Oletustapausta varten tai, jos käytetään vipua −m, tulosta vain ensimmäinen niistä riveistä, jotka ovat vertailussa yhtä suuria. Käytettäessä −c vipua tarkista ettei yksikään toisiaan seuraavista riveistä ole vertailussa yhtäsuuret.

+PAIKKA1 [−PAIKKA2]

Määrittää riviltä kentän, jota käytetään lajitteluavaimena. Kenttä koostuu rivin osasta, joka alkaa kohdasta PAIKKA1 ja loppuu kohtaan (poislukien merkki, joka on kohdassa PAIKKA2) PAIKKA2 (tai tiedoston loppuun, jos PAIKKA2:ta ei ole määritelty). Kenttien ja merkkien paikkojen indeksointi alkaa nollasta (0).

−k PAIKKA1[,PAIKKA2]

Toinen tapa määritellä lajitteluavaimet. Kenttien ja merkkien paikkojen indeksointi alkaa yhdestä (1).

Paikka ilmoitetaan muodossa f.c, missä f on käytettävän kentän numero ja c on ensimmäisen avaimeen kuuluvan merkin paikka kentän alusta lukien (jos käytetään +PAIKKA) tai tätä kenttää edeltävän kentän lopusta (jos käytetään -PAIKKA). c-osa paikan määrityksestä voidaan jättää pois, jolloin sen oletetaan olevan ensimmäinen merkki määritellyssä kentässä. Jos annetaan −b-vipu, c-osa kenttämäärittelystä lasketaan kentän ensimmäisestä ei-tyhjästä (nonblank) merkistä (jos käytetään +PAIKKA) tai ensimmäisestä ei-tyhjästä merkistä, joka seuraa edellistä kenttää (jos käytetään -PAIKKA).

Vipuihin +PAIKKA tai -PAIKKA voi olla liitettynä myös mikä tahansa vipujen kirjain Mbdfinr, jolloin yleisiä lajitteluvipuja ei käytetä kyseisessä kentässä. −b-vipu voidaan liittää kumpaan tahansa tai molempiin +PAIKKA- tai -PAIKKA-osiin kenttämäärittelyssä. Jos −b on määritelty yleisenä vipuna, liitetään se molempiin. Jos käytetään −n-tai −M-vipuja, viittaa se −b-vivun käyttöön, tällöin −b-vivun katsotaan koskevan sekä +PAIKKA- että -PAIKKA-osia avainmäärittelystä. Avaimet voivat käsittää useita kenttiä.

Lisäksi, käynnistettäessä GNU sort täsmälleen yhdellä komentoriviparametrillä tunnistetaan seuraavat vivut:

−−help

Tulostaa suppean käyttöoppaan vakiotulosteeseen ja poistuu onnistuneesti ohjelmasta.

−−version

Tulostaa versiotiedot vakiotulosteeseen ja poistuu onnistuneesti ohjelmasta.

YHTEENSOPIVUUS

Aikaisemmat (BSD ja SYSTEM V) sort-toteutukset poikkeavat joidenkin, erityisesti −b, −f ja −n vipujen käytön osalta. GNU sort soveltaa POSIX-käytäntöä, joka on yleensä samanlainen kuin (muttei aina!) System V:n käytäntö. POSIX:in mukaan −n ei enää välttämättä tarkoita, että vipua −b olisi käytetty. Yhdenmukaisuuden vuoksi −M-vivun merkitystä on muutettu samalla tavalla. Tämä saattaa vaikuttaa merkkien paikkoihin kenttämäärittelyissä joissain harvinaisissa tapauksissa. Jos tämä kaivertaa sinua, onnistuu korjaus lisäämällä yksinkertaisesti −b-vipu.

BUGIT

Kenttänumeroiden eri merkitys, riippuen siitä käytetäänkö -k vipua vai ei, on hämmentävää. Se kaikki on POSIX:n syytä!