Operációs rendszerek. A mai program. Jó dolog a test parancs! Segédprogramok, szűrők



Hasonló dokumentumok
BASH SCRIPT SHELL JEGYZETEK

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Szkriptnyelvek. 1. UNIX shell

S z á m í t ó g é p e s a l a p i s m e r e t e k

AWK programozás, minták, vezérlési szerkezetek

length (s): Az s karaklerlánc hossza, substr(s,m,n): Az s mezőben levő karakterláncnak az m-edik karakterétől kezdődő, n darab karaktert vágja ki.

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

AWK programozás, minták, vezérlési szerkezetek

Operációs Rendszerek II. labor. 2. alkalom

AWK programozás Bevezetés

Számítógép Architektúrák. 4. Gyakorlat

Operációs rendszerek 2 3. alkalom - Reguláris kifejezések, grep, sed. Windisch Gergely windisch.gergely@nik.uni-obuda.hu

1. Alapok. #!/bin/bash

Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

BEKÉRT ADAT KÉPERNYŐRE ÍRÁSA KÖRNYEZETI VÁLTOZÓK FÁJL REDEZETT KIÍRÁSA KÖNYVTÁRBAN BEJEGYZÉSEK SZÁMA FÁJLBAN SZÁM NÖVELÉSE. #!

Szűrők Reguláris kifejezések, AWK

Operációs rendszerek gyak.

Szűrők, reguláris kifejezések AWK programozás: minták, vezérlési szerkezetek, tömbök, beépített függvények, reguláris kifejezések

A héj vezérlő szerkezetei I.

BASH script programozás II. Vezérlési szerkezetek

chmod umask chown, chgrp

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Számítógép architektúrák. A mai témáink. A Unix. A burok

Számítógépek, számítógép rendszerek

Rendszerprogramozás Linux környezetben

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

További vezérlő valamint számításokat megkönnyítő szerkezetek

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

További vezérlő valamint számításokat megkönnyítő szerkezetek

Operációs rendszerek gyak.

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Példa: Aktuális könyvtár tartalmának fájlba mentése, melynek neve az aktuális dátum és idő: ls l > `date+%f_%h-%m`.txt

Operációs rendszerek I. - UNIX felhasználói ismeretek és héjprogramozás. Az awk

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

A sed folyamszerkesztő

S z á m í t ó g é p e s a l a p i s m e r e t e k


Flex tutorial. Dévai Gergely

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

UNIX/héjprogramozás - awk. Az awk

Szövegek C++ -ban, a string osztály

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

A sed folyamszerkesztő

7. Laboratóriumi gyakorlat, 1. rész : Vezérlési szerkezetek II.

A shell vezérlő szerkezetei I.

A C programozási nyelv I. Bevezetés

OPERÁCIÓS RENDSZEREK. Az OS kernel felületei. A rendszerhívások. Felületek a kernelhez: a burok és az API

Programozás alapjai. 5. előadás

6. BASH programozás I.

S z á m í t ó g é p e s a l a p i s m e r e t e k

Operációs Rendszerek Gyakorlat

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Informatika terméktervezőknek

Munka állományokkal, könyvtárakkal I.

A C programozási nyelv I. Bevezetés

Bevezetés az informatikába, második gyakorlat. Bevezetés Környezetváltozók és néhány egyszerű utasítás Jogosultságok Fájlkezelés

Programozás alapjai óra. Morvai Flórián, 2010 Dr. Dévényi Károly előadásvázlata alapján

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Operációs Rendszerek példatár. Utolsó frissítés: február 10.

Operációs rendszerek 1.

Operációs rendszerek gyakorlat

Szkriptnyelvek II. Perl programok

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év).

Operációs rendszerek 1.

Linux alapok. Parancsok általános alakja parancs kapcsolók paraméterek

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Operációs rendszerek 1.

Felvételi tematika INFORMATIKA

A C# programozási nyelv alapjai

Programozás alapjai 2 UNIX dióhéjban

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

A programozás alapjai

PHP gyorstalpaló, avagy a Hello World-től az űrlapellenőrzésig

Smalltalk 2. Készítette: Szabó Éva

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r

Bevezetés a programozásba I.

Reguláris kifejezések 1.

Operációs rendszerek. 2. gyakorlat. Munka állományokkal UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

1. Jelölje meg az összes igaz állítást a következők közül!

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Rekurzió. Dr. Iványi Péter

Operációs rendszerek MINB240/PMTRTNB230H

Munka állományokkal. mv: áthelyezés (átnevezés) rm: törlés. rmdir: üres könyvtár törlése. -r, -R: rekurzív (könyvtár) -r, -R: rekurzív (könyvtár)

Vezérlési szerkezetek

A legfontosabb DOS parancsok

Java II. I A Java programozási nyelv alapelemei

7. fejezet: Mutatók és tömbök

Programok értelmezése

Programozási nyelvek JAVA EA+GY 1. gyakolat

Csatlakozás a pandora.inf.elte.hu-re Linux alapparancsok

Legfontosabb tulajdonságai. Programozás alapjai II. UNIX alapok. Legfontosabb tulajdonságai/2. A UNIX rövid története. A UNIX rövid története/2

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

FUNKCIONÁLIS PROGRAMOZÁS GYAKORLAT JEGYZET

Programozási nyelvek Java

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

C# gyorstalpaló. Készítette: Major Péter

Átírás:

Operációs rendszerek Segédprogramok, szűrők A mai program Hasznos, vegyes segédprogramok test, expr, read; startup programok Rekurzió Alapfogalmak szűrőkhöz A cut, head, tail, grep szűrők Reguláris kifejezések Az awk szűrő Segédprogramok, szűrők, Vadász, 2008. Ea3 2 Jó dolog a test parancs! Két szintaxisa is van: test kifejezes [ kifejezes ] Szemantika: Normális (igaz) visszatérési értéke van, ha a kifejezés (szemantikailag) igaz! A kifejezés lehetőségeknek 2 csoportja van: Fájlokkal kapcsolatos tesztek, adatszerkezetek relációi. Segédprogramok, szűrők, Vadász, 2008. Ea3 3 1

Fájlokkal kapcsolatos tesztek Csak néhány példa, test -f file test -d file test -r file test -s file az első szintaxissal # file létezik és sima fájl # file létezik és jegyzék # file létezik és olvasható # file létezik és 0-nál hosszabb stb. Segédprogramok, szűrők, Vadász, 2008. Ea3 4 Adatrelációk Példák itt is, [ ertek1 -gt ertek2 ] [ ertek1 -eq ertek2 ] stb. [ s1 = s2 ] [ s1 > s2 ] stb. [ -z s1 ] [ -n s1 ] [ s1 ] Igaz, ha # algebrailag nagyobb # algebrailag egyenlő # szövegként egyenlő # szövegként nagyobb # s1 füzér hossza 0 # s1 füzér hossz nem 0 # s1 füzér nem a null füzér Segédprogramok, szűrők, Vadász, 2008. Ea3 5 Jó dolog az expr parancs Szintaxisa: expr kifejezes expr kif1 op kif2 Pl.: sum=0 sum=`expr $sum \+ 1` echo $sum Szemantika: Kiértékelődik a kifejezés és az eredmény az stdout-ra íródik. Vannak algebrai operátorok, zárójelezés lehetséges. Semlegesítés! Itt parancsbehelyettesítés! Vedd észre fehér karaktereket! Segédprogramok, szűrők, Vadász, 2008. Ea3 6 2

bell burokprogram n=${1-1} # mindenképp 1 while [ $n -gt 0 ] do echo -n \7 # sípol n=`expr $n - 1` # csökkenti n-et sleep 1 # alszik 1 sec-t done ---------------------- Így hívd: $ bell 3 # hármat sípol Segédprogramok, szűrők, Vadász, 2008. Ea3 7 Rekurzió lehetséges Pl. a HOME-ban van egy rek shell program: --------------------------------------------------- cd $1 ; ls -l # és ha $1 nem jegyzék? for i in * do if test -f $i # ez nem a legjobb! then : # do-nothing parancs else $HOME/rek $i fi done --------------------------------------------------- Így hívom: $ rek dir Segédprogramok, szűrők, Vadász, 2008. Ea3 8 A read parancs read valt1 valt2... Beolvas egy sort az stdinről, és az első szót a valt1- be, másodikat valt2-be s.í.t. teszi. Ha több szó, mint változó: Információátadás a sh-nek: paraméterekkel, exportált változóval, fájlokkal, read paranccsal az utolsóba a maradék szavak listája. Segédprogramok, szűrők, Vadász, 2008. Ea3 9 3

Tanácsok 1 Szabályozzuk, hogy bármi is az interaktív burkunk, a bourne shell dolgozza fel burokprogramjainkat! Ha az első sor nem kommentár: az sh dolgozik, #!/bin/sh akkor is az sh dolgozik, #!/bin/ksh akkor a Korn shell dolgozza fel, #/bin/bash akkor a Bourne again shell, #/bin/csh akkor a c-shell, ezektől eltérő kommentár: az interaktív shell! Segédprogramok, szűrők, Vadász, 2008. Ea3 10 Tanácsok 2 Tanulmányozzuk a login/burokindítási startup programokat! Sajátjainkat igazítsuk! Vannak rendszer-széles és saját startup-ok! Sorrend! Fogalmak Bejelentkezési burok (login shell) Interaktív burok (tartozik hozzá konzol terminál) Nem interaktív burok Ahol van, a /etc/environment beli definíciók bekerülnek a környezetbe Segédprogramok, szűrők, Vadász, 2008. Ea3 11 Tanácsok 2 Login sh, bash, ksh rendszerszéles: /etc/profile saját: ~/.bash_profile # csak bash saját: ~/.bash_login # csak bash saját: $HOME/.profile Interaktív bash (rshd daemonnal indított is) Saját: ~/.bashrc Nem interaktív bash $BASH_ENV POSIX interaktív (bash, ksh) $ENV TC shell burokindítási és login rendszerszéles: /etc/cshrc saját: ~/.cshrc ~/.login Segédprogramok, szűrők, Vadász, 2008. Ea3 12 4

Tanácsok 3 Tanulmányozzák, mi hol található! Vannak konvenciók! Jó összefoglalás a Bartók-Laufer könyv 72. oldalán. Segédprogramok, szűrők, Vadász, 2008. Ea3 13 A szűrők Szabványos bemenetüket olvassák azt szöveg-folyamnak tekintik, ami sorvég karakterekkel sorokra tagolt. A sorokat így értelmezik. Argumentumban is lehet a szabványos bemenet megadva. A szabványos kimenetükre teszik a "szűrt" (átalakított) eredményüket. Segédprogramok, szűrők, Vadász, 2008. Ea3 14 Alapfogalmak a szűrőkhöz A sor/rekord (line) A mező, szó (field, word) A mezőelválasztó karakter (field separator) a fehér karakterek gyakran alapértelmezés szerintiek, gyakori a : (colon) mezőelválasztó. Egyes segédprogramokban beállíthatók. Néha értelmezett a blokk. Mindig a karakter. Segédprogramok, szűrők, Vadász, 2008. Ea3 15 5

A cut szűrő A bemenet (file) sorainak kijelölt mezőit (táblázatok oszlopait) kivágja, és csak ezeket továbbítja > cut -clist [file] > cut -flist [-dchar] [-s] [file] ahol list vessző-szeparált növekvő mezőszámok, tartományok. -clist: oszlop-pozíciók. Pl. -c3,14-72 kivágja a 3. és a 14-72 pozíciókat. -flist: mezőelválasztókkal (default=tab) szeparált mezőket azonosít, ahol is megadható az elválasztó: -dchar argumentummal. -s elnyomja a mezőelválasztó nélküli sorokat. Segédprogramok, szűrők, Vadász, 2008. Ea3 16 A cut szűrő, példák > cut -d: -f1-5 /etc/passwd # az első 5 mező # a passwd fájlból > name=`who am i cut -f1 -d ` # login név a name-ba > cut -c2-3,5,7,38-54 myfile.txt # oszlopszámok szerint Segédprogramok, szűrők, Vadász, 2008. Ea3 17 A head és tail szűrők >head [-count] [file] >tail [+-numb lbcr] [file] > tail [-lbcr] [file] > tail [+numb lbcf] [file] > tail [-lbcf] [file] # az első count sorát # +numb elejétől számított, # -numb végétől számított # adott sor (l), blokk (b), char (c). # -r startpont a fájl vége, nem számít az előjel és fordított sorrendű az l, b, c. # -f follow opció: ha nem csőbe szűr, másolás után blokkolódik, várva, hogy még hozzáfűznek. Pl.: $ tail +5 vmi head -1 # kiírja a vmi 5. sorát Segédprogramok, szűrők, Vadász, 2008. Ea3 18 6

A grep család (grep, fgrep, egrep) > grep [opciok] minta [fájl-lista] Szemantika: olvassa a fájl-lista fájljainak sorait. Minden sorra illeszti a mintát. Ha találat van: kiírja azt a sort. Visszatér: 0 - normális, ha találat van, 1 - ha nincs egyetlen találat sem, 2 - ha akadály van. Opciók: -n # kiírja a sorszámokat is, -v # nem egyezést keres, -y # kis/nagybetűt megkülönböztet, -c # csak a sorszámot írja ki. Segédprogramok, szűrők, Vadász, 2008. Ea3 19 A szabályos kifejezések (Regular expressions) Sok szűrő (grep, awk, ed, lex stb) használja keresési mintaként. Különböztessük meg a fájlnév behelyettesítési mintától! Bartók-Laufer 107. oldal, Kernighan-Pike 335. oldal. A szabályos kifejezés (regex) szöveg, ami illeszkedik szövegre. Bennük bizonyos karaktereknek speciális jelentésük van, ezek a metakarakterek. Metakarakterek: újsor. [ ] ^ $ * ( ) A regex elemek: atom, lezárt, összefűzött és unió. Segédprogramok, szűrők, Vadász, 2008. Ea3 20 A regex elemek: atom Atom: kerek zárójelek közötti regex (regex), vagy alábbiak egyike c \c. [chars] [^chars] ^ $ c normális karakter, önmagára illeszkedik c speciális karakter, önmagára illeszkedik. (dot) bármely nem újsor karakterre illeszkedik Egyetlenre a bezártak közül, adható tartomány is Egyetlenre a bezártakon kívül, tartomány is lehet Első karakter előtti üres szövegre Utolsó karakter utáni üres szövegre Segédprogramok, szűrők, Vadász, 2008. Ea3 21 7

A regex elemek: lezárt Lezárt: olyan atom, amit opcionálisan egy postfix operátor követ (ebből: az atom degenerált lezárt) atom* atom+ atom- az atomnak nulla vagy több előfordulására illeszkedik az atomnak egy vagy több előfordulására illeszkedik az atomnak nulla vagy egy előfordulására illeszkedik Segédprogramok, szűrők, Vadász, 2008. Ea3 22 Regex elemek: összefűzött Az összefűzött akárhány egymás utáni lezártból áll. Először a első, utána a második s.í.t. lezárt illeszkedésekor az összefűzött is illeszkedik. Miután akárhány lezárt alkothat összefűzöttet, a lezárt degenerált összefűzött Segédprogramok, szűrők, Vadász, 2008. Ea3 23 Regex elemek: unió Akárhány összefűzött, melyeket a karakter választ el Illeszkedésnél választási lehetőséget ad: akár az első, akár a második s.í.t összefűzött illeszkedésénél az unió illeszkedik Segédprogramok, szűrők, Vadász, 2008. Ea3 24 8

Az illeszkedési példák abcd összefűzött karakterek önmagukra illeszkednek ^string összefűzött string a sor elején illeszkedik string$ összefűzött string a sor végén illeszkedik [...] atom, illeszkedik a... közül egyetlen karakterre [^...] atom, bármely, egyetlen kar., ami nincs a...-ban [a-z] [0-9] atom, egyetlen bezárt karakterre a tartományból [^A-D0-2] több tartomány és negáció lehetséges Segédprogramok, szűrők, Vadász, 2008. Ea3 25 Az illeszkedés c* [...]* lezárt, illeszkedik 0 v. több előfordulására c-nek c+ lezárt, illeszkedik 1 v. több előfordulására c-nek c? lezárt, illeszkedik 0 v. 1 előfordulására c-nek [.]* lezárt, bármilyen füzér.* lezárt, bármilyen füzér, akár üres is ^$ összefűzött, csak üres sorra illeszkedik ^[0-9]*$ csak számokat tartalmazó sorra illeszkedik Az awk-ban további lehetőségek is vannak! Segédprogramok, szűrők, Vadász, 2008. Ea3 26 Fájlnév-minta kontra reguláris kifejezés Mindkettő minta, mindkettő illeszkedik, de az egyik fájlnevek terére illeszkedik és fájlnév listára helyettesítődik be; a másik szövegsorokra illeszkedik és akció következik be. A burok a metakaraktereket kezeli: operátornak veszi őket, fájlnév behelyettesítő mintáknak stb. Vannak közös dzsókerek. A reguláris kifejezéseket el kell juttatni a szűrőkhöz. Semlegesíteni kell, nehogy a burok kifejtse azokat! Ne feledkezzünk meg erről! Sok bosszúságot takaríthatunk meg! Segédprogramok, szűrők, Vadász, 2008. Ea3 27 9

Gyakori vizsgálat: val csak számokat tartalmaz? if echo $val grep [^0-9] > /dev/null then echo ez nem numerikus else echo ez tisztan numerikus fi Mit csinál ez? $ ls -l *txt # hosszú lista a txt-re végződő fájlokról Hosszú listát kérünk a nem txt-re végződőkről: $ ls -l grep -v txt$ A sort szűrő Rendez. Nézz utána! Segédprogramok, szűrők, Vadász, 2008. Ea3 28 Az awk, nawk szűrő Mintakereső és feldolgozó. Szövegfolyam sorokat olvas, minden sorban mintákat keres és a mintákhoz tartozó akciókat végrehajtja. Szintaxis: > awk [-Fc] [program] [parameterek] [fájl-lista] Szemantika: beolvassa a sorokat. A sorok szavait rendre az 1, 2, stb. nevű változóiba teszi. Soronként illeszt a programban megfogalmazott minden mintát, és ha találat van, végrehajtja a mintákhoz tarozó akciókat a sorra. A mintamegadásban, az akciókban használhatja az $1, $2 stb. változótartalmakat, egyéb belső változóit is. Segédprogramok, szűrők, Vadász, 2008. Ea3 29 Aho-Weinberger-Kerighan Az awk program Formája: [minta] {akciók} [minta ] {akciók}... Megjelenhet literálisan: awk program vagy szövegfájlban: awk -f fájlnév Az akciók: C-szerű utasítások, utasításblokkok. > who awk {print $3 $4 $5 $1 $2} # nincs minta Segédprogramok, szűrők, Vadász, 2008. Ea3 30 10

Az awk akciók if (feltétel) utasítás [else utasítás] while (feltétel) utasítás for (kif1; kif2; kif3) utasítás break, continue {utasítás; utasítás;...} printf formátum, kifejezéslista print kifejezéslista for (name in array) utasítás next exit C szerű awk szerű Segédprogramok, szűrők, Vadász, 2008. Ea3 31 Az awk minták Legtöbbször reguláris kifejezések. Pl.: /^Valami/ {print Megtalaltam sor elejen Valami-t. } Üres minta minden sorra illeszkedik. Pl.: {print Minden sorra kiirodik ez } Lehet a sor szavainak relációja is: $2== valami {print megtalaltam valami-t a 2. mezoben } Vannak speciális awk minták: BEGIN # az első sor előtt illeszkedik END # az utolsó sor után illeszkedik Segédprogramok, szűrők, Vadász, 2008. Ea3 32 Hangsúlyozom A grep-ben egyetlen minta van, az awk-ban több is. A grep mintája minden sorra illesztendő, és találatkor ki/nem kiírni a sort. Az awk-ban minden minta a leírt sorrendben minden sorra illesztendő, találatkor a mintához tartozó akció végrehajtandó. Az awk-ban a BEGIN és az END nem utasítás zárójelek, hanem minták! Különlegesen illeszkednek! Segédprogramok, szűrők, Vadász, 2008. Ea3 33 11

Feladat: a második szó üres $2 == $2 ~ /^$/ $2!~ /./ length($2) == 0 NF < 2 A 2. mező üres A 2. mező egyezik az üres karakterlánccal A 2. mező semmilyen karakterrel nem egyezik A 2. mező hossza nulla (Az eddigiek bármilyen változóra is!) A mezőszám kisebb, mint kettő (Ez csak a 2. szóra!) Segédprogramok, szűrők, Vadász, 2008. Ea3 34 Néhány awk változó $1, $2 stb. a szavak. A $0 pedig az egész sor! FS a mezőelválasztó karakter NF a mezőszám az aktuális sorban NR az aktuális sor sorszáma RS az input sorok elválasztó karaktere FILENAME az aktuális input fájl neve stb. továbbá az awk programokban a felhasználó által definiált változók Segédprogramok, szűrők, Vadász, 2008. Ea3 35 Példák Számláljuk az input sorait (kicsit erőltetetten!) awk BEGIN {s=0} /* inicializálunk */ {s=s+1} /* minden sorra! */ END {print osszeg:, s} /* kiírunk */ Írjuk ki a passwd fájl 5. sorát! awk NR==5 {print $0} /etc/passwd Írjuk ki a neveket, a gid-eket formázva! awk -F: {printf %8s %4s\n, $1, $4} /etc/passwd awk BEGIN {FS= : } {printf %8s %4s\n, $1, $4} /etc/passwd Segédprogramok, szűrők, Vadász, 2008. Ea3 36 12

Az awk operátorok ++ -- * / % + - < <= > >= ==!= ~!~! && = += -= *= /= %= pre/postfix inkrem. dekrem. multiplikatív operátorok additív operátorok kar.lánc összekapcs (a semmi op.) relációs op. ~ az egyezés operátora negáció logikai és logikai vagy értékadó operátorok Segédprogramok, szűrők, Vadász, 2008. Ea3 37 Az awk beépített függvényei sqrt(), log(), exp(), int() length(string) substr(s,m,n) index(s,t) matematikai függvények string hosszát visszaadó s-ből m-től n-hosszan substringet s-ben t első előfordulásának indexe Néha kellene: shell változó értéket jutassunk az awk-ba! Linuxon csak a nawk-val: > nawk -v valt=shell_kif prog infile Egyébként: > awk valt=kif prog infile Segédprogramok, szűrők, Vadász, 2008. Ea3 38 Példák A PATH környezetváltozó: PATH=vmi:vmi1:vmi2 > set awk BEGIN {FS= : } /PATH/ {for(i=1;i<=nf;i++) print $i } > echo $PATH awk BEGIN {FS= : } {i=index($0, = ); print substr($1,i+1, length($i)-i); for(i=2;i<=nf; i++) print $i; } Segédprogramok, szűrők, Vadász, 2008. Ea3 39 13

Változók, tömbök az awk-ban Eddig: $1,, NR, NF stb. Saját változó definiálható: valt ertekado_op kifejezes Pl: x = $2 * 15; Tömbváltozó definíció: t_name[konst_kif] ert_op kif Pl: sum[$1] = 0; Hivatkozás rá: valt print x; Hivatkozás rá: t_name[kif] sum[mary] Figyelem! Az indexkifejezés nem feltétlenül numerikus! Segédprogramok, szűrők, Vadász, 2008. Ea3 40 Egy példa Van egy szovegfájlunk: joe 200 mary 400 joe 400 john 300 susie 500 mary 200 Van egy awk programunk: {sum[$1] += $2} END {for (name in sum) print name, sum[name] } Így hívjuk meg: > awk -f prog szoveg 4 tömbelem definiálódott! Segédprogramok, szűrők, Vadász, 2008. Ea3 41 Az előző példához magyarázat sum[joe] sum[mary] sum[john] sum[susie] Az első akció minden sorra végrehajtódik. Csak 4 tömbelem definiálódik. A 2. akció a végén hajtódik végre. Különleges for (... in...) ciklus! A ciklusban a name változó felvesz minden lehetséges index értéket! Most már megmagyarázhatod, mit is csinál a program! Segédprogramok, szűrők, Vadász, 2008. Ea3 42 14

Operációs rendszerek Segédprogramok, szűrők Vége 15