Naprej Nazaj Kazalo

11. Tabele

11.1 Primerjalni operatorji za nize

(1) niz1 = niz2

(2) niz1 != niz2

(3) niz1 < niz2

(4) niz1 > niz2

(5) -n niz1

(6) -z niz1

(1) niz1 je enak niz2

(2) niz1 ni enak niz2

(3) __TO-DO__

(4) __TO-DO__

(5) niz1 ni prazen (v njem je en ali več znakov)

(6) niz1 je prazen

11.2 Primerjave nizov

Primerjanje dveh nizov

#!/bin/bash
NIZ1='niz'
NIZ2='Niz'
if [ $NIZ1=$NIZ2 ];
then
    echo "NIZ1('$NIZ1') je enak NIZ2('$NIZ2')"
fi
if [ $NIZ1=$NIZ1 ];
then
    echo "NIZ1('$NIZ1') je enak NIZ1('$NIZ1')"
fi

Andreas Beck je v svojem sporočilu predlagal uporabo if [ $1 = $2 ].

To ni pretirano dobra zamisel, ker boste, če je $NIZ1 ali $NIZ2 prazen, deležni sporočila o napaki. Bolje je uporabiti x$1=x$2 ali "$1"="$2"

11.3 Aritmetični operatorji

+

-

*

/

% (ostanek)

11.4 Primerjalni aritmetični operatorji

-lt (<)

-gt (>)

-le (<=)

-ge (>=)

-eq (==)

-ne (!=)

Če znate programirati v C, preprosto izberite operator, ki ustreza izbranemu operatorju v oklepajih.

11.5 Priročni ukazi

To poglavje je spet napisal Kees (glej Zahvale).

Nekateri izmed navedenih ukazov so že sami po sebi skoraj pravi programski jeziki, zato bo o njih povedano le najosnovnejše. Če boste želeli bolj poglobljen opis, si lahko ogledate njihove priročnike (man pages).

sed (stream editor - urejevalnik toka)

Sed je neinteraktivni urejevalnik. Datoteke ne urejate s premikanjem kazalca po zaslonu, temveč sedu podaste skript navodil za urejanje in ime datoteke. Sed bi lahko opisali tudi kot filter. Oglejmo si nekaj zgledov:

$sed 's/za_zamenjavo/zamenjava/g' /tmp/nekaj

Sed zamenja niz 'za_zamenjavo' z nizom 'zamenjava', pri čemer bere iz datoteke /tmp/nekaj. Rezultat bo poslan standardnemu izhodu (navadno konzola), lahko pa seveda na konec ukaza dodaste '>zajeto', kar bo preusmerilo izhod v datoteko 'zajeto'.

$sed 12, 18d /tmp/nekaj

Sed bo izpisal vse vrstice razen 12. in 18. Izvirne datoteke ta ukaz ne spremeni.

awk (spreminjanje podatkovnih datotek, iskanje ter obdelava besedila)

na voljo so številne izvedbe programskega jezika AWK (najbolj znana interpreterja sta GNU gawk in 'new awk' mawk). Načelo je preprosto: AWK išče določen vzorec in izvede niz ukazov, ko ga najde.

Ustvaril sem preskusno datoteko 'nekaj', ki obsega naslednje vrstice:

"test123

test

tteesstt"

$awk '/test/ {print}' /tmp/nekaj

test123

test

Vzorec, ki ga AWK išče, je 'test', ukaz, ki ga izvede, ko v datoteki /tmp/nekaj najde vrstico s tem vzorcem, pa 'print'.

$awk '/test/ {i=i+1} END {print i}' /tmp/nekaj

3

Če iščete številne vzorce, je pametno zamenjati besedilo med narekovaji z '-f datoteka.awk' in napisati vzorce ter ukaze v datoteko 'datoteka.awk'.

grep (izpiše vrstice z iskanim vzorcem)

Na ukaz grep smo že nekajkrat naleteli v prejšnjih poglavjih, ko je bilo treba izpisati vrstice z iskanim vzorcem. Vendar grep zmore še več.

$grep "iščemo tole" /var/log/messages -c

12

Niz "iščemo tole" se je v datoteki /var/log/messages ponovil 12-krat.

[priznam, ta zgled ni popolnoma resničen - malce sem priredil /var/log/messages :-)]

wc (prešteje vrstice, besede in znake)

Ta zgled ne izpiše točno tistega, kar bi pričakovali. V uporabljeni preskusni datoteki je naslednje besedilo: "uvod v bash testna datoteka"

$wc --words --lines --bytes /tmp/nekaj

1 5 28 /tmp/nekaj

Wc se za vrstni red podanih parametrov ne zmeni, temveč izpiše statistike vedno enako: <vrstice> <besede> <znaki> <datoteka>.

sort (razvrsti vrstice besedila)

To pot je v preskusni datoteki naslednje besedilo:

"b

c

a"

$sort /tmp/nekaj

Izpis je videti takole:

a

b

c

Ukazi ne bi smeli biti tako enostavni :-)

bc (programski jezik za računanje)

Bc lahko prebere račune iz datoteke, podane v ukazni vrstici, ali pa prek uporabniškega vmesnika. Ta zgled prikazuje nekaj ukazov.

Navadno bc zaženem s parametrom -q, ki prepreči izpis pozdravnega sporočila.

$bc -q

1 == 5

0

0.05 == 0.05

1

5 != 5

0

2 ^ 8

256

sqrt(9)

3

while (i != 9) {

i = i + 1;

print i

}

123456789

quit

tput (inicializacija terminala ali poizvedba zbirke podatkov terminfo)

Manjša demonstracija zmožnosti programa tput:

$tput cup 10 4

Pozivnik se prikaže na (y10,x4)

$tput reset

Počisti zaslon, pozivnik pa se prikaže na (y1,x1). (y0,x0) je zgornji levi kot zaslona.

$tput cols
80

Izpiše število znakov terminala v smeri osi x.

Toplo vam priporočam, da se dobro seznanite vsaj s temi programi. Seveda pa je še množica drugih majhnih programov, s katerimi v ukazni vrstici lahko izvajate prave čarovnije.

[nekaj zgledov v tem poglavju je vzetih iz priročnikov in pogostih vprašanj]


Naprej Nazaj Kazalo