- CS-A0100
- 2. Wikipedia-projekti
- 2.10 Pienet kirjaimet: awk
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