Tekstien käsittely komentorivillä
Tekstitiedostojen tarkasteluun ja muokkaamiseen löytyy useita komentoja ja ohjelmia. Tutustutaan tyypillisimpiin.
Tekstin tulostus echo
Komento echo tulostaa terminaaliin annetun tekstin.
pesasa@box:~ $ echo Moikka, maailma
Moikka, maailma
pesasa@box:~ $ echo "Heippa vaan"
Heippa vaan
pesasa@box:~ $ echo 'Linux on pop'
Linux on pop
Voidaan tulostaa myös muuttujien arvoja:
pesasa@box:~ $ echo $HOME
/home/pesasa
Oletuksena echo tulostaa käsketyn tekstin jälkeen lisäksi rivinvaihdon.
Lisäoptio -n jättää tämän rivinvaihdoin pois:
pesasa@box:~ $ echo -n "Ei rivinvaihtoa"
Ei rivinvaihtoapesasa@kurssibuntu:~ $
Lisäoptio -e mahdollistaa erikoismerkkien käytön:
pesasa@box:~ $ echo -e '1:\tyksi\n2:\tkaksi'
1: yksi
2: kaksi
Tässä esimerkissä käytetyt erikoismerkit ovat: \t = tabulaattorimerkki, \n = rivinvaihto.
echo ja lainausmerkit
echo-komennolla ja yleisestikin bashissa suoritettavissa komennoissa ja ohjelmissa on eroa yksinkertaisilla
ja kaksinkertaisilla lainausmerkeillä (') ja (").
- Yksinkertaisilla lainausmerkeillä merkityt merkkijonot käsitellään sellaisinaan.
- Kaksinkertaisilla lainausmerkeillä merkittujen merkkijonojen sisällä olevat muuttujanimet korvataan niiden arvoilla.
pesasa$box:~ $ echo 'Kotihakemisto: $HOME'
Kotihakemisto: $HOME
mutta
pesasa$box:~ $ echo "Kotihakemisto: $HOME"
Kotihakemisto: /home/pesasa
- Yksinkertaisten lainausmerkkien sisällä voidaan käyttää esim. erikoismerkkejä:
\n(rivinvaihto),\t(vaakasarkain),\v(pystysarkain) - Kaksinkertaisten lainausmerkkien sisällä erikoismerkit täytyy kirjoittaa kahdella
kenoviivalla:
\\n,\\t,\\v
echo (kokeillaan)
- Tulosta teksti: Linux on ykkönen
- Tulosta peräkkäisille riveille tekstit Ubuntu ja Unity ja komentorivi ja Bash
- Tulosta muuttujan
$PATHarvo.
Tekstitiedoston tulostus: cat
Tekstitiedoston sisällön voi tulostaa terminaaliin cat-ohjelma.
pesasa$box:~ $ cat /etc/passwd
...
pesasa$box:~ $ cat /etc/hosts
...
pesasa$box:~ $ cat /etc/lsb-release
...
pesasa$box:~ $ cat .bash_history
Kokeile!
Tekstitiedoston lukeminen: less (ja more)
Tekstitiedostoa voi lukea selattavassa muodossa komennolla less.
less /etc/passwdnäyttää tiedoston ja sitä voi selata ylös ja alas nuolinäppäimillä sekä PageUp- ja PageDown-näppäimillä.- Selaaminen lopetetaan q-näppäimellä.
- Hakutoiminto /-näppäimellä.
mankäyttääless-ohjelmaa ohjesivujen näyttämiseen/sivuttamiseen.lessosaa näyttää myösgz-pakatut tekstitiedostot.
Ohjelma nimeltä more on less-ohjelman edeltäjä. Se osaa vain sivuttaa, mutta
ei rullata taaksepäin.
"Less is more"
Lisäksi erikseen asennettavana on kolmas ja vielä less-ohjelmaakin monipuolisempi ohjelma
most.
less ja more (kokeillaan)
Kokeile katsoa sekä lessillä että morella tiedostoja:
/usr/share/doc/emacs/copyright/usr/share/doc/gzip/TODO/usr/share/doc/bash/FAQ.gz/var/log/syslog
Tiedoston alku ja loppu: head ja tail
Tekstitiedoston alusta voidaan tulostaa haluttu määrä rivejä komeenolla head.
head -n 3 /var/log/syslogtulostaa tiedoston/var/log/syslogkolme ensimmäistä riviä.
Vastaavasti tiedoston lopusta saadaan haluttu määrä rivejä komennolla tail.
tail -n 3 /var/log/syslogtulostaa tiedoston/var/log/syslogkolme viimeistä riviä.
head ja tail (kokeillaan)
Tulosta head- ja tail-ohjelmia käyttäen:
- tiedostosta
/etc/passwdviisi ensimmäistä riviä - tiedostosta
/usr/share/doc/emacs/copyrightkolme viimeistä riviä.
Tekstin muokkaus: nano
Ohjelma nimeltä nano on yksinkertainen tekstieditori. Se on ulkoasultaan
ja käytettävyydeltään varsin yksinkertainen. Sen yleisimmin käytettävien
toimintojen pikanäppäimet on lueteltu näytön alareunassa.
GNU nano 2.5.3 Tiedosto: Kurssi.txt Muokattu
Hiukan esimerkkitekstiä...
^G Ohjeita ^O Kirjoita ^W Etsi ^K Leikkaa ^J Tasaa ^C Sijainti ^Y Ed. sivu
^X Lopeta ^R Lue tied. ^\ Korvaa ^U Liitä ^T Oikolue ^_ Rivinumero ^V Seur. sivu
- Käynnistetään komennolla:
nanotainano tiedostonnimi. nano:n toiminnot on lueteltu ruudun alareunassa control-näppäinyhdistelminä.- ctrl-x sulkee nanon ja tarvittaessa kysyy, tallennetaanko.
- ctrl-o tallentaa käsitellyn tiedoston.
- ctrl-r avaa tiedoston.
Nano on vapaa toteutus aiemmasta ei-vapaalla lisenssillä jaellusta ohjelmasta nimeltä pico.
Muita tekstipohjaisia tekstieditoreita ovat muun muassa: vi, emacs ja jed.
nano (kokeillaan)
Harjoittele nanon käyttöä ja kirjoita sillä hakemistossa Documents sijaitsevaan
tiedostoon nano-harjoitus.txt
seuraava teksti:
Aku Ankka
Mikki Hiiri
3 ankanpoikaa
2 litraa mansikoita
purkillinen mustikoita
300 euroa rahaa pankissa
Lisää ankanpoikien jälkeen rivi:
3 karhukoplan konnaa
Tekstitiedoston koko: wc
Tekstitiedoston koon voi tarkistaa komennolla wc. (word count)
- Ohjelma tulostaa rivien, sanojen ja merkkien määrät sekä tiedoston nimen.
- Ohjelmalta saa pyydettyä erikseen tavujen (
-c), merkkien (-m), sanojen (-w) tai rivien (-l) määrän. - Jos kysytään useamman tiedoston kokoja, ne kerrotaan omilla riveillään sekä lisäksi kokonaiskoko.
pesasa@box:~ $ wc /var/log/syslog
555 6339 42655 /var/log/syslog
pesasa@box:~ $ wc -l /var/log/syslog
555 6339 42655 /var/log/syslog
pesasa@box:~ $ wc /var/log/syslog /var/log/dmesg
555 6339 42655 /var/log/syslog
944 8554 64176 /var/log/dmesg
1499 14893 106831 total
pesasa@box:~ $ wc -c /var/log/syslog /var/log/dmesg
42655 /var/log/syslog
64176 /var/log/dmesg
106831 total
wc (kokeillaan)
- Montako riviä on tiedostossa
/etc/passwd? - Entä tiedostossa
/etc/hosts? - Vertaa komentojen
ls /usr/share/doc/wget/copyrightjawc /usr/share/doc/wget/copyrighttulostuksia. Mitä yhteistä niillä on? Miksi?
Rivien järjestäminen: sort
Halutun tiedoston rivit voidaan tulostaa järjestettyinä komennolla sort.
- Oletuksena rivit järjestetään aakkosjärjestykseen.
- Lisävalitsimella
-nrivit järjestetään numeerisesti aakkosjärjestyksen sijaan. (Siis esimerkiksi7 efgennen merkkijonoa12 abc)
Järjestetään AUTHORS-tiedoston nimet aakkosjärjestykseen:
pesasa@box:~ $ sort /usr/share/doc/eog/AUTHORS
Arik Devens <arik@gnome.org>
Claudio Saavedra <csaavedra@igalia.com>
Federico Mena Quintero <federico@gnome.org>
Felix Riemann <friemann@svn.gnome.org>
Jens Finke <jens@triq.net)
Lucas Rocha <lucasr@gnome.org>
Martin Baulig <baulig@suse.de>
Michael Meeks <michael@ximian.com>
Paolo Borelli <pborelli@katamail.com>
Philip Van Hoof <pvanhoof@gnome.org>
Tim Gerla <tim+gnomebugs@gerla.net>
Järjestetään saman tiedoston rivit käänteiseen aakkosjärjestykseen:
pesasa@box:~ $ sort -r /usr/share/doc/eog/AUTHORS
Tim Gerla <tim+gnomebugs@gerla.net>
Philip Van Hoof <pvanhoof@gnome.org>
Paolo Borelli <pborelli@katamail.com>
Michael Meeks <michael@ximian.com>
Martin Baulig <baulig@suse.de>
Lucas Rocha <lucasr@gnome.org>
Jens Finke <jens@triq.net)
Felix Riemann <friemann@svn.gnome.org>
Federico Mena Quintero <federico@gnome.org>
Claudio Saavedra <csaavedra@igalia.com>
Arik Devens <arik@gnome.org>
sort (kokeillaan)
- Kokeile:
sort /etc/passwd - Kokeile, mikä ero on komennoilla:
sort Documents/nano-harjoitus.txtja
sort -n Documents/nano-harjoitus.txt - Selvitä man-sivulta (
man sort), miten rivit saa järjestettyä käänteisessä järjestyksessä.
Tekstin etsintä tiedostosta: grep
Tekstitiedostosta voi etsiä annettuun hakulausekkeeseen täsmäävää tekstiä sisältävät
rivit komennolla grep.
Hakulausekkeena pelkkä sana:
pesasa@box:~ $ grep free /usr/share/doc/bash/copyright
Bash is free software; you can redistribute it and/or modify it under
Valitsin -i (ignore) käskee olla erottelematta suuria ja pieniä kirjaimia.
pesasa@box:~ $ grep -i free /usr/share/doc/bash/copyright
Copyright (C) 1987-2014 Free Software Foundation, Inc.
Bash is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
The Free Software Foundation has exempted Bash from the requirement of
Copyright (c) 1988-2014 Free Software Foundation, Inc.
...
Valitsin -v muuntaa valinnan käänteiseksi. Se etsii kaikki rivit, joilla hakulauseke
ei esiinnyt.
pesasa@swan:~ $ grep -v ank Documents/nano-harjoitus.txt
Aku Ankka
Mikki Hiiri
2 litraa mansikoita
purkillinen mustikoita
Jos haku sisältää välilyöntejä, kannattaa se laittaa yksinkertaisten lainausmerkkien
' sisään.
Hakuja voi tehdä myös monipuolisemmin käyttämällä niin sanottuja säännöllisiä lausekkeita (regular expressions, regexp). Niistä voit lukea lisää seuraavista osoitteista.
- http://linux.fi/wiki/Säännöllinen_lauseke
- http://cs.stadia.fi/~kuivanen/linux/regexp.php
- Ja vähän tieteellisemmästä kulmasta: http://fi.wikipedia.org/wiki/Säännöllinen_lauseke
Tehtäviä
Tehtävät 9
Kerro jokaisessa kohdassa vastauksen lisäksi, millä komennolla tai komennoilla
suoritit tehtävän. Vastausten palautus tiedostona tehtava-9.txt.
- Kuinka monta riviä on komentohistoriassasi?
- Mikä on komentorivillä muuttujan
$OSTYPEarvo? - Lataa verkosta tiedosto
http://petrit.net/Linux-kurssi/files/pg37885.txt - Montako riviä tiedostossa on?
- Tulosta tiedostosta kuusi ensimmäistä ja neljä viimeistä riviä.
- Miten kuuluu kokonaisuudessaan rivi, jolla esiintyy teksti: Kuningas vapisi ilosta?
- Järjestä tiedoston rivit aakkosjärjestykseen. Miten kuuluu viimeinen rivi?