Tekstitöötlus, otsing ja filtrid.

Gedit

Paljud kasutavad seda kui tavalise notepad’ina mis laseb salvestada igasugust teksti, kuid tal on ka palju teisi huvitavaid lisa funktsioone.

Gedit on tavaliselt installitud defauldina Ubuntul. Puudumise puhul saab teda kergelt peale lasta terminalist apt-get käsuga.

$ sudo apt-get install gedit

On ka teine viis mida saab teostada läbi GUI Synaptic mis leidub: System > Administration > Synaptic Package Manager

Selleks, et joosta seda programmi tuleb lihtsalt anda käsu terminalist.

$ gedit

Enne faili avamist tuleb teada selle asukohta, kuid kui näiteks see on teie desktopil võib käsk välja näha nii:

$ gedit test.txt

Faili avamisel on gedit’il huvitav lisa. Käsu teostamisel avab ta faili just sellel real mis te soovite. Näiteks:

gedit +20 test.txt

Arvu asemel peale plussi lisate selle rea millel te tahate, et ta avaks faili.
Lisaks on võimalik avada mitu faili korraga

$ gedit test1.txt test2.txt test3.txt

Vi

Faili käivitamine vi’ga ei erine teistest teksti redaktoritest, ainuke erinevus on käsu nimes.

vi test.txt

Vi’l on kolm toimis viisi ’’command mode’’ , ’’insert mode’’ ja ’’command line mode’’

  1. Command mode: Tähed ja nende kombinatsioonid on vi käsustikuks. ESC lõpetab käsu.
  2. Insert mode: Teksti on võimalik sisestada. ESC viib tagasi command mode’i.
  3. Command line mode: Siia saab trükides ’’:’’. See paneb käsu sisestamis võimaluse ekraani alla.

Redigeerimis käsud :

Käsk Tegu
i Sisestab kursori juures.
a Lisa peale kursorit
A Lisa rea lõpus
ESC Lõpeta ’’insert mode’’
u Võta tagasi viimane tegu
U Võta tagasi kõik tehtud muudatused reale
o Ava uus joon
dd Kustuta ride
3dd Kustuta kolm rida
D Kustuta rea sisu peale kursorit
C Kustuta rea sisu peale kursorit ja sisesta tekst
dw Kustuta sõna
4dw Kustuta 4 sõna
cw Muuda sõna
x Kustuta täht kursoril
r Vaheta täht
R Kirjuta tähtede peale alates kursorist
s Vaheta välja üks täht kursori all
S Vaheta välja terve rida ja alusta sisestust rea algul
~ Vahetab kursori all oleva täha suurust
Ctrl-a Suurendab arvu kursori all
Ctrl-x Vähendab arvu kursori all
/search_string{CR} Otsib ’’search_string’’
?search_string{CR} Otsib ’’search_string’’ ülespoole failis
/\<search_string\>{CR} Otsib otsingu sõna
n Leia otsingu järgmine sõna
N Leia otsingu eelnev sõna
. Korda eelenev käsk
   
Sessiooni lõpetamis käsud:
ZZ Salvesta muudatused ja lahku
wq Salvesta muudatused (kirjuta) ja lahku
w Salvesta muudatused (kirjuta) ja ära lahku.
q Eira muudatusi ja lahku.

 

Nano

Nano on ideaalne, kui on vaja teha väikeseid muudatusi konfiguratsiooni failidele või kirjutada lihtsaid tekst faile.
Installimine käib käsuga:

$ sudo apt-get install nano

Selleks, et jooksutada programmi tuleb terminalis trükkida käsuritta

$ nano

Faili avamine muutmiseks tuleb anda käsk, kus filename on faili nimetus. Faili puudumisel loob nano uue faili antud nimetusega.

$ nano "filename"

Näiteks, kui olete oma kodu kaustas võite avada oma viimaste käskude ajalugu käsuga:

$ nano .bash_history

Põhikäsud:

Ctrl+G - Abi menüü
Ctrl+R – Ava fail
Ctrl+O- Salvesta fail
Ctrl+X – Sulge aken
Alt+6 – Kopeeri tekst
Ctrl+U – Määri tekst (paste)

Mcedit

Suhteliselt kerge programm mis ei vaja palju teadmisi ega nende omandamist. See tuleb koos Midnight Commander’iga ja kui see puudub võib installida:

# apt-get install mc

Programm käivitub käsureast ja kui on vaja avada fail siis kehtivad samad reeglid mis varemgi. Tuleb sisestada mcedit ja failinimi.

$ mcedit "filename"

Selleks, et avada ülemine menüü tuleb lihtsalt vajutada klahvi F9. Sealt edasi on kerge avada, salvestada, sulgeda faile ’’File’’ alt.
Teksti saab valgustada hiire klõpsu ja tirimise abil, kuid tuleb hoida shifti all. Määrimiseks teise kohta tuleb samuti hoida all shifti ja klõpsama keskmisele hiire nupule.

Grep

Grep on käsu rea teksti otsingu vahend mis oli originaalselt loodud Unixile. Selle nimi tuleneb ed käsust g/r/e/p (global / regular expression / print). Tema eesmärgiks on otsida täpselt seda mida tal palutakse olenevalt käsust.
Näide käsu kõige tavalisemast kasutusest:

$ grep apple fruitlist.txt

Antud sisendiga leiab grep üles kõik sõnad tekstist mis sisaldavad ’’apple’’. Selle otsingu alla tulevad ka sõnad nagu ’’pineapple’’.
On võimalik otsida ka mitmest allikast (ehk kõik .txt failid antud katalogis).

$ grep apple *.txt

Otsida võib ka keerulisemaid teksti kombinatsioone. Alljärgnev käsk prindib välja kõik read mis algavad ’a’ tähega, sellele järgnev ükskõik mis täht ja lõpuks ’ple’.

$ grep ^a.ple fruitlist.txt

See käsk laseb välja kõik sõnad olenemata tähe suurusest.

$ grep -i apple fruitlist.txt

Selleks et eraldada ainult sõna ‘apple’ tuleb panna ette liides –w

$ grep -w apple fruitlist.txt  

Kuid kui fruitlist.txt sisaldab sõna apple koos kriipsuga, siis see langeb otsingu parameetrite alla. Näide:  

$ cat fruitlist.txt apple
apple
apples
pineapple
apple-
apple-fruit
fruit-apple

$ grep -w apple fruitlist.txt
apple
apple-
apple-fruit
fruit-apple

Seda viga saab kergelt parandada liidesega –x mis annab spetsiifiliselt ainult ‘apple’.  

$ cat fruitlist.txt
apple
apples
pineapple
apple-
apple-fruit
fruit-apple

grep -x apple fruitlist.txt
apple

Liides –v muudab otsingu parameetreid nii, et ainult see üks sõna mida te ei taha eraldatakse nimekirjast.

$ grep -v apple fruitlist.txt
banana
pear
peach
orange

Find

Linuxi sisse ehitatud võime otsida ette antud parameetritega faile. Käsk ise on kerge kuid selle paljud muutujad ja liidesed lasevad tal teha väga spetsiifilisi otsinguid.   Kokkuvõtlik seletus käsu toimimisest saab lahti teha liidesega –help või –help  

$ print –help

Näiteid käsu kasutusest:
Leia üles kõik failid kasutaja "mihkel" kodukatalogis.  

$ find /home –user mihkel

Leia üles kõik failid katalogis /usr mis lõpevad ‘’.stat’’-iga  

$ find /usr –name *stat

Leia üles kõik failid katalogi var/spool alt mis olid muudetud üle 60 päeva eest.  

$ find /var/spool –mtime +60

Leia üles ning kustuta kõik failid nimega core nii katalogi /tmp sees kui ka väljaspoolt.  

$ find /tmp –name core –type f –print | xargs /bin/rm –f

Leia üles ning kustuta kõik failid nimega core nii katalogi sees kui ka väljaspoolt ning kustuta nad. Töötle failinimed sellisel viisil, et failid ning katalogid mille nimed sisaldavad ülakomasid ja vahesid on korralikult käsitsetud.  

$ find /tmp –name core –type f –print0 | xargs –0 /bin/rm -f  

Läbi süsteem ühekorra luues nimekiri setuid failidest ja katalogidest ning sisesta see tekst faili /root/suid.txt ja suuremad failid pane /root/big.txt nimekirja.    

$ find / \( -perm -4000 –fprintf /root/suid.txt ’%#m %u %p \n ’ \) , \
          \( -size + 100M –fprint /root/big.txt ’%-10s %p \n ’ \)

Otsi oma kodukatalogist faile mida on muudetud viimase 24 tunni jooksul.  

$ find $HOME –mtime 0

Otsi faile millel on lugemis ja kirjutamis õigused omanikule ja gruppile ja teistele kasutajatele ainult lugemis õigused.  

$ find . –perm 664

Otsi faile millel kellegil on õigused kirjutada (omanik, grupp või teised kasutajad).  

$ find . –perm /222

Awk

Awk on Belli laboris 1977 välja töötatud programmeerimiskeel, mis on loodud tekstitöötluseks .
AWK-s võetakse sisendandmed kas tekstifailist või standardsisendist

AWK-ii programm on muster-tegevus-paaride seeria, mis on kirjutatud kujul

muster { tegevus },

AWK-i käsud on laused, mis tohivad eelnevates näidetes olla tegevuse asemel. AWK-i käskudeks on funktsioonide väljakutsed, muutujate väärtustamine, arvutused ja eelnevate kombinatsioonid. AWK-i on sisse ehitatud mitme funktsiooni tugi ja AWK-i eri versioonid pakuvad neile rikkalikku lisa.

Lihtsuse huvides on järgnevates näidetes ära jäetud looksulud.

print-käsku kasutatakse teksti väljastamiseks. Väljastatav tekst on määratletud eeldefineeritud stringiga, mille nimetus on ORS (output record separator - väljundkirje eraldaja) ja vaikeväärtuseks reavahetus. print-käsu lihtsaim vorm on:

print

See kuvab käesoleva rea. AWKis on read jagatud väljadeks ja neid saab eraldi kuvada.

print $1

kuvab käsiloleva rea esimese välja.

print $1, $3

kuvab käsiloleva rea esimese ja kolmanda välja, mis on omavahel eraldatud väljundvälja eraldajaga (OFS - output field separator), mille vaikeväärtuseks on üks tühik.

Kuigi need väljad ($X) sarnanevad muutujatele ( dollarimärk "$" viitab Perlis muutujale), märgivad nad tegelikult välju käesolevas reas. Erijuht $0 viitab tervele reale. Käsud "print" ja "print $0" on võrdväärsed.

print-käsku võib kasutada ka arvutuste ja funktsioonide tulemuste kuvamiseks:

print 3+2
print omafunktsioon(3)
print omafunktsioon(muutuja)
print sin(3-2)

Väljundi saab suunata faili:

print "avaldis" > "failinimi"

või UNIXi "toru" kasutades:

print "avaldis" | "käsk"

Programm " Tere, maailm!" kirjutatatakse AWKis nii:

BEGIN { print "Tere, maailm!" }

Siin ei ole vaja ilmset exit-käsku, kuna ainus muster on BEGIN, ühtegi käsurea argumenti ei töödelda. Nagu mitmes teises programmeerimiskeeles, saab ka AWKis konstrueerida seesmisi skripte nn "shebang" (UNIXi) süntaksi abil. Näiteks UNIXi käsu hello.awk , mis väljastab sõne "Tere, maailm!", võib tekitada, luues faili nimega hello.awk , mis sisaldab järgnevaid ridu:

#!/usr/bin/awk -f
BEGIN { print "Tere, maailm!" }  

Järgmist käsku kasutatakse 80 sümbolist pikemate ridade väljastamiseks. Vaikimisi väljastatakse käesolev rida.

length($0) > 80

Loendada sisendist tulevaid sõnu ning väljastada ridade, sõnade ja sümbolite arv (nagu "wc" ehk "word count" käsk UNIXis):

{
    w += NF
    c += length + 1
}
END { print NR, w, c }