Pienet kirjaimet: awk

Nyt olemmekin jo pitkällä, osaamme hakea sanalta näyttäviä tekstinpätkiä niin, että kukin tulee omalle rivilleen! Tekstissä on kuitenkin sekä isolla että pienellä kirjaimella alkavia sanoja, mutta haluaisimme laskea esimerkiksi sanat "Lapio" ja "lapio" samaksi sanaksi. Muunnetaan siis tulokset pieniksi kirjaimiksi.

Yksi mahdollinen väline tämän tekemiseen on awk. Tämä on oikeastaan kokonainen ohjelmointikieli, jolla voi tehdä mutkikastakin tekstin käsittelyä, mutta meille riittää hyvin pinnallinen kosketus awk:iin. Esimerkiksi komento

awk '{ print $0 }'

yksinkertaisesti lukee syötettä ja tulostaa kunkin rivin sellaisenaan. Tämä ei vielä ole erityisen hyödyllistä, mutta auttaa ymmärtämään awk:n toimintaperiaatetta. Aaltosulkeiden { ... } sisällä kerrotaan, mitä kullekin riville tehdään. Muuttuja $0 pitää sisällään rivin sisällön ja komento print tulostaa tämän sellaisenaan. Kokeile vaikkapa näin, niin näet, että echo-komennon tulostama tervehdys toistetaan sellaisenaan:

echo Hei | awk '{ print $0 }'

Mutta awk osaa myös kaikkea hyödyllistä, ja meidän tarpeisiimme keskeinen funktio on tolower, joka muuntaa tekstiä pieniksi kirjaimiksi. Siis jos $0 on rivin alkuperäinen sisältö, tolower($0) on sama pienillä kirjaimilla. Kokeile!

echo Hei | awk '{ print tolower($0) }'

Laitetaan nyt palaset yhteen:

grep -o '[[:alpha:]][[:alpha:]]*' lapio.txt | awk '{ print tolower($0) }'

Tulosteen pitäisi näyttää tältä; löydämme kaikki sanat ja ne on muutettu pieniksi kirjaimiksi:

tavallisimpia
lapion
malleja
ovat
kärkilapio
tunnettu
myös
nimellä
pistolapio
betonilapio
eli
tasakärkilapio
viljalapio
ja
lumilapio
Palautusta lähetetään...