Tovább Vissza Tartalom


11. Rendszerezés

11.1 Relációs műveletek szövegekre

(1) s1 = s2

(2) s1 != s2

(3) s1 < s2

(4) s1 > s2

(5) -n s1

(6) -z s1

(1) s1 azonos s2

(2) s1 nem azonos s2

(3) __TO-DO__

(4) __TO-DO__

(5) s1 nem üres (tartalmaz egy vagy több karkatert)

(6) s1 üres

11.2 Példák szöveg összehasonlításra

        #!/bin/bash
        S1='string'
        S2='String'
        if [ $S1=$S2 ];
        then
                echo "S1('$S1') nem azonos S2('$S2')vel"
        fi
        if [ $S1=$S1 ];
        then
                echo "S1('$S1') azonos ('$S1') vel"
        fi
        

Szeretnék reagálni egy mail-ben kapott tanácsra melyben Andreas Beck javasolja a if [ $1 = $2 ] használatát

Ez nem egy tökéletes elképzelés mert a $S1 vagy $S2 üres reláciüs hibát eredményez. A x$1=x$2 vagy "$1"="$2" a jobb.



11.3 Számolási műveletek

+

-

*

/

% (maradék képzés osztásnál)

11.4. Számadatok összehasonlítása

-lt (<)

-gt (>)

-le (<=)

-ge (>=)

-eq (==)

-ne (!=)

A C programnyelvben lévő azonos értelmű relációs jelet zárójelbe tettem zárójelbe tettem.

11.5 Hasznos parancsok

Ezt a fejezetet Kees átdolgozása tette teljessé. (Ezúton is köszönöm...)

Néhány parancs az alábbiakból része az önálló programnyelvkenek. A következőkben ezeknek csak a lényegét tárgyaljuk. Részletes ismertetést a legcélravezetőbb a parancs manuál oldaláról szerezni.

sed (stream szerkesztő)

A sed nem interaktiv szerkesztő. A szerkesztés nem billetyűzetről közvetlenöl történik hanem a szerkesztési kívánalmakat rögzítjük A sed indításkor ezt kapja meg és a szerkesztendő állomány nevét. A sed elfogad szűrőfeltételelket is. Most lássunk néhány példát:

        $sed 's/to_be_replaced/replaced/g' /tmp/dummy
        

A sed lecseréli a 'to_be_replaced' szöveget 'replaced' -re a /tmp/dummy állomány tartalmában. Az eredményt a szabványos kimeneten jeleníti meg (stdout -ez a terminál alapértelmezésben). Átirányjtható állományba a '> capture' sor végére írásával. Ilyenkor a sed az eredményt a 'capture' nevű állományban rögzíti.

        $sed 12,18d /tmp/dummy
        

A sed megjelenít minden sort a 12. és 18. közöttiek kivételével. (Az erdeti állományt nem változtatja).

awk (adatbázis kezelés, szöveg átalakítás és feldolgozás)

Számos változatban létezik az AWK programnyelv (legismerztebb a GNU gawk fordítója és felújítása a mawk). A működési elv egyszerű: Az AWK a definiált mintákat keresi és mindegyik talált mintára elvégzi előírt műveleteket.

Újabb teszt állományt készítek a következő tartalommal:

"test123

test

tteesstt"

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

test123

test

Az AWK megnyijta /tmp/dummy állományt soronként a 'test' mintát keresi és a megjeleníti az ezt tartalmazó sorokat, mivel az előírt művelet a 'print' .

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

3

Ha több mintát keresünk, lecserélhetjük az aposztrófok közti szöveget a '-f file.awk' -ra. Így a file.awk-ban lévő összes minta kiértékelésre kerül.

grep (kiírja a mintát tartalmazó sorokat)

Az előző fejezetekben már találkoztunk néhány grep paranccsal, amely megjeleníti a mintát tartalmazó sorokat. A grep ezrenkívül többet is tud:

        $grep "look for this" /var/log/messages -c
        

12

Az alábbi szöveg "look for this" 12 -szer fordul elő /var/log/messages állományban.

[oho ez példa csavaros, a /var/log/messages a címzett is :-)]

wc (sorok, szavak és karakterek darabszáma)

A következő példában az eredmény nem egészen felel meg a kérésnek. A dummy állomány következőt tartalmazta: "bash introduction howto test file".

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

2 5 34 /tmp/dummy

A wc nem érvényesíti a paraméterek megadásának sorrendjét, ehelyett állandó sorrendet használ.

sort (szöveges állomány sorainak rendezése)

Ezúttal a dummy állomány tartalma a következő:

"b

c

a"

$sort /tmp/dummy
        

Ez lesz a kimeneten:

a

b

c

Ennél már egyszerűbben nem lehet :-) bc (egy számológép programnyelv) .

A bc parancssorból vár paramétereket (állomány bementet. Nem átirányítást ">" vagy továbbfeldolgozást "|"), de lehet felhasználó felületről is. Az alábbi bemutatóban lathatunk néhány parancsot. Célszerű a -q paraméter használata a bc bejelentkező üzenet lelkerüléséhez.

$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 (létrehoz egy terminált vagy terminál információs adatbázist)

Egy kis részlet a tput szolgáltatásaiból:

        $tput cup 10 4
        

A készenléti jel a (y10,x4) pozisíóra állítása.

        $tput reset
        

Képernyő törlés és a készenléti jel a (y1,x1) pozícióra áll. A terminál bal felső sarka a (y0,x0) pont.

        $tput cols
        

80

Megjeleníti a terminál vízszintes karakter oszlopainak számát.

Célszerű bővebb ismeretséget kötni ezekkel a programokkal. Csuda dolgokat varázsolhatsz eszköztárukkal az egyszerű parancssoros terminálra.



[további példákat a manual oldalakon és a FAQ listákon találsz]




Tovább Vissza Tartalom