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



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

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

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

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

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

A sed folyamszerkesztő

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

A héj vezérlő szerkezetei I.

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

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.

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

Szkriptnyelvek. 1. UNIX shell

Reguláris vagy szabályos kifejezések

BASH SCRIPT SHELL JEGYZETEK

Reguláris kifejezések 1.

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

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

Reguláris vagy szabályos kifejezések

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

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

Segédlet Digitális írástudás - Operációs rendszerek Szilágyi Róbert S.

Ministerul Educației și Cercetării Științifice Olimpiada de Tehnologia Informației etapa județeană 21 martie 2015

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

3. Gyakorlat Ismerkedés a Java nyelvvel

HÁZI FELADAT ELSŐ GYAKORLAT MIELŐTT ELKEZDENÉNK ELINDULÁS. ÜZLETI INFORMATIKAI ESZKÖZÖK Kiadványszerkesztés

Országos Középiskolai Tanulmányi Verseny 2006/2007-os tanév INFORMATIKA, II. (programozás) kategória második fordulójának feladatai

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

Gyors tippek linuxra

Lekérdezések az SQL SELECT utasítással

MATEMATIKA ÉRETTSÉGI május 9. EMELT SZINT

A shell vezérlő szerkezetei I.

Bash Shell Programozás. 1. oldal

INFORMATIKAI ALAPISMERETEK

Az Ügyfélkapu és a magyarorszag.hu

Felhasználói kézikönyv

4. MODUL TÁBLÁZATKEZELÉS. A vizsgázónak önállóan kell elindítania a táblázatkezelő alkalmazást, majd a munka végeztével be kell zárnia azt.

E-Fedezetkezelő. felhasználói kézikönyv. Fővállalkozói adminisztrátorok számára

Youtube videó letöltés és konvertálás Linuxon

Programozási módszertan. Dinamikus programozás: Nyomtatási feladat A leghosszabb közös részsorozat

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

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

Programozás II. Fájlkezelés

4) Az ABCD négyzet oldalvektorai körül a=ab és b=bc. Adja meg az AC és BD vektorokat a és b vektorral kifejezve!

M4 TÁBLÁZATKEZELÉS ALAPJAI

1. Alapok. #!/bin/bash

OPERÁCIÓS RENDSZEREK II GYAKORLAT

Entity Framework alapú adatbáziselérés

MATEMATIKA tankönyvcsaládunkat

...a Tamana névszerkezeti összehasonlítása a véletlenen alapul, tessék bizonyítani az ellenkezőjét, mert addig elméletem igaz!

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

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

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

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

A sed folyamszerkesztő

Powershell 1. gyakorlat

MATEMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

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

Reguláris vagy szabályos kifejezések használata

Az időhöz kötődő parancsok

SZAMLA.TXT (Tétel sor) Megjegyzés. sorszám

Hálózatok építése és üzemeltetése

Adatbázisok II. Jánosi-Rancz Katalin Tünde 327A

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

Alapfogalmak a héj (shell) használatához

Országzászlók (2015. május 27., Sz14)

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.

Miskolci Egyetem. Diszkrét matek I. Vizsga-jegyzet. Hegedűs Ádám Imre

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

1. fejezet Microsoft Excel 2010 Tartománynevek... 3

Bevezetés a C++ programozásba

Dr. Pétery Kristóf: Excel 2007 feladatok és megoldások 2.

Adatlap Magyarországon élő magyar állampolgár nyilvántartásba vételéhez. Kitöltési Útmutató. Születés hazai anyakönyvezésekor

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

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

Alkalmazott modul: Programozás

Infokommunikáció (PF10IK511L) kérdései

INFORMATIKA EMELT SZINTŰ PRÓBAÉRETTSÉGI

XML technikák II Kovács, László

Programozás és adatbázis kezelés PHP ben

Folyamatok követése. Tartalom. 1. Folyamatok

II. év. Adatbázisok és számítógépek programozása

1. Előadás Matlab lényeges vonásai,

Fejezetek az abszolút geometriából 6. Merőleges és párhuzamos egyenesek

#Bevezetés Beállítások NA 3000 # 1.1.

MATEMATIKA ÉRETTSÉGI október 20. EMELT SZINT

Operációs rendszerek gyak.

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

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

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

Operációs rendszerek 1.

Az állományok kezelésére használt fontosabb parancsok

PYTHON. Avagy hosszú az út a BioPythonig

NETFIT modul Tanári felület Felhasználói útmutató. Magyar Diáksport Szövetség

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

8. Mohó algoritmusok Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete

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. #!




Átírás:

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába A gyakorlat célja 1. A reguláris kifejezések használatának megismerése. Az egrep parancs használatának elsajátítása 2. További feladatok vezérlőszerkezetekkel, a vezérlőszerkezetek alkalmazása szövegfeldolgozással kapcsolatos feladatokra. Előkészülethez szükséges anyag: 8. előadás segédlete, a grep kézikönyv lapja. A 6-7. előadás vezérlőszerkezeteinek ismétlése. Teszt állományok: a tesztelésekhez szükséges állományok (numb.txt, bible.txt, szavak.txt,stb.) letölthetők innen. Az egrep color=auto opcióval indítva a sorok listázásakor színessel írja ki az illesztés helyét, ha a terminál ezt támogatja. Ezt beállíthatjuk egy környezeti változóval is, ehhez írjuk az alábbi parancsot a.bashrc állományunk végére: export GREP_OPTIONS='--color=auto' Az alábbi példa illusztrálja ezt: $ echo abcdef egrep abc abcdef $ export GREP_OPTIONS='--color=auto' $ echo abcdef egrep abc abcdef $ A gyakorlat menete: 1. Feladatok az egrep-el...1 2. A $(( )) és (( )) szerkezetek ismétlése...5 3. Az egrep és [[...]] használata feltételként...6 1. Feladatok az egrep-el 1.1 Az echo-t és az egrep programot valamint a -o kapcsolót használva, határozzuk meg olyan bővített (extended) reguláris kifejezéseket, amelyek az alábbi sztringekre illeszkednek. Jelölés: a sztringeket aposztrófok közé zárva adjuk meg, az aposztróf nem tartozik hozzá a sztringhez. A kifejezéseknek a példaként megadott sztringekre illeszkedniük kell. a. A sztring tartalmazza a kis a karaktert. 'a' 'aa bb cc da' b. A sztring tartalmaz egy számjegyet. 1

'abc 3 def' '2' c. A sztring tartalmazza a + vagy. karaktereket. 'a+2' '.' Operációs rendszerek I. - UNIX felhasználói ismeretek és héjprogramozás d. A sztring 2 karaktert tartalmaz amelyek az a, b, c, + vagy? lehetnek. 'bc' '+a' '??' e. A sztring legalább egy kis x karaktert tartalmaz. 'abcxdefá' 'cdexxxxklm' 'x' f. A sztring bármennyi kis x karaktert tartalmaz, amelyek egy kis a és egy nagy A között állnak. 'axxxxa' 'axa' 'aa' g. A sztring két kis x között tartalmaz vagy nem tartalmaz nagy X karaktert: 'abc xxx def' 'abc xx def ' h. Egy = jel után egy egész szám következik vagy hiányzik, mindez a sztring végén van. 'szám =2' 'szám =27865' 'szám =' i. Egy = karakter után néha egy egész szám következik, máskor a nulla szó. 'szám =2' 'szám =27865' 'szám =nulla' j. A sztring legalább 2, de maximum 5 kis x-et tartalmaz. 'abcxxdef' 'xxxxxabce' k. A sztring pontosan egy nagybetűt tartalmaz: 'A' 'B' l. Az üres sztring (nincs egyetlen karakter sem a sorban) '' 2

m. A sztring csak kisbetűket tartalmaz, legalább egyet, pl.: 'a' 'zb' 'abcxoljhsujhekl' n. A sztring legalább egy számjegyet tartalmaz, mint az alábbiak: '1' '234534' '33' o. A sztring pontosan 1, bármilyen karaktert tartalmaz: 'a' 'A' ';' 'u' '*' Operációs rendszerek I. - UNIX felhasználói ismeretek és héjprogramozás p. A sztring legalább 1 nagybetűt, és utána akármennyi kisbetűt tartalmazhat: 'A' 'Az' 'Zkjhguytg' 'Cfs' q. A sztring 2 kisbetűből álló szót, és köztük pontosan egy elválasztó karaktert (szóköz karakter) tartalmaz. 'erre gyere' 'nincs itt' 'a fejem' r. A sztring legalább 2 de legfeljebb 4 számot tartalmaz: '23' '345' '2367' s. A sztring bármennyi, kisbetűvel írt, és legalább egy szóközzel elválasztott szóból áll: '' 'alma' 'alma hatalma' 'a kis ember' 'a kis ember haza megy' t. A szöveg pontosan egy kisbetűből vagy nagybetűvel írt szóból áll: 'alma' 'ALMA' o. A kifejezés arra a szóra illeszkedik, amellyel valaki egy dátum hónap részét adta meg: '06 'JUN' '-06-' 3

'/06/' u. A kifejezés ellenőrzi egy telefonszám beírását az alábbi formákban: '+40-722-268-596' '40-722-268-596' '(0)722-268-596' '722268596' '722-268-596' v. A kifejezés olyan kisbetűből álló sztringeket keres, amelyek elhatárolt kisbetűs szavak. Az alábbi szövegekben a kiemelt részekre kell kifejezést illeszteni: 'alma' ' egy alma' ',alma,' 'ERRE ARRA,mint az:alma' x. Azokat a számsorokat kell eltalálni, amelyeknek a bal oldalán word típusú karakter, a jobb oldalán pedig szóhatár van: 'a12 ' '324' 'arra678956456 56626626' y. Az olyan szavakat, amelyek beépülnek két word karakter közé: '123' '3almaf' 'abrakadabra' ' palma3;' z. A kifejezés illeszkedjen az olyan sorokra amelyben román autó rendszámtábla van beírva, pl.: MS-02-ABF. 1.2. Az egrep segítségével listázzuk ki a numb.txt -ből: a. Íjuk ki, hány sorban fordul elő az 'every' szó: csak a találati sorok számát. b. Írjuk ki a sorokat amelyben az 'every' található c. A -o kapcsolót és a wc parancsot használva írjuk ki hányszor fordul elő a 'the' szócska a fájlban. c. Írjuk ki azokat a sorokat amelyekben az 'undertow' szó található: utána hívjuk meg az egrep-et úgy, hogy csak a találatokat listázza! d. Írjuk ki azokat a sorokat amelyekben nincs e betű, utána amelyekben nincs x betű! e. Az előbbi feladatnál megjelennek az üres sorok is: hívjuk meg olyan kifejezéssel az egrep-et, hogy a fenti feltételek listázásánál ne jelenjenek meg üres sorok! f. Hívjuk meg úgy az egrep-et, hogy szó listát készítsen a numb.txt valamennyi szavából. Majd végezzük el ugyanezt a bible.txt és a hamlet.txt állománnyal: hány különböző szó van ezekben? 1.3 Listázzuk ki egy állománynév név illetve kiterjesztés részét külön külön az egrep-el, pl. alma.txt-ből listázzuk ki külön az alma illetve.txt részeket. 4

1.4. A szavak illetve words állományok egy magyar illetve angol szókészletet tartalmaznak. Keressünk magyar illetve angol szavakat, amelyek különböző mintáknak tesznek eleget, pl. -melyek azok a magyar szavak amely a-val kezdődnek, b-vel végződnek és 4 betűből állnak? -melyik szavakban van 3, 4, 5, 6 magánhangzó egymás után? -melyik szavakban van ugyanaz 2, 3, 4, 5 kisbetű a szó elején és végén? A magyar változatnál állítsuk be a LANG környezeti változó hu_hu.utf-8 értékre. Írjuk be a.bashrc állomány végére: export LANG=hu_HU.utf-8 1.5. Az egrep, uniq, sort parancsokat használva írjunk ki egy listát egy adott állományban található szavak előfordulásának gyakoriságáról. Ha működik, írjuk be egy szkriptbe a megoldást, és egy indító paraméterrel szabályozzuk azt is, hogy hány szót írjon ki az elsőkből. A uniq parancs -c kapcsolója kiírja a sorok elé az előfordulásuk számát. A sort egy szöveges állomány első mezeje szerint numerikusan és fordított sorrendben az alábbi kapcsolókkal rendez: sort -k1,1 -nr file.txt Pl. a numb.txt esetében a szkriptnek az alábbit kell kiírnia ha az első 5 leggyakrabban előforduló szót kérjük: 14 i 12 you 9 in 8 the 6 undertow a bible.txt esetében pedig:. 59829 the 37582 and 33003 of 12849 to 12270 And 2. A $(( )) és (( )) szerkezetek ismétlése 2.1. Írjuk ki a $(( )) segítségével, hogy: -van-e paraméter a parancssoron -az első argumentum nagyobb-e mint a második -ha pl. 3 argumentumot várunk, írjuk ki külön-külön ha túl kevesebb vagy több argumentummal indították a programot. 2.2. Írjunk while ciklist amelyik a (( )) szerkezetet használja: végezzünk el annyi ciklust amennyit a parancssor első argumentumában megadunk. 5

2.4. Járjuk végig while ciklussal és (( )) szerkezettel a parancssor argumentumait, és case szerkezettel döntsük el, hogy egy-egy argumentum megfelel-e az alábbi mintáknak: -egy karakteres számjegy -kapcsoló ( - jel és utána egy kisbetű) -állomány név típus végződéssel (van a névben egy. és utána 3 karakter 2.5. ( hr.sh ) Írjunk egy kis programot amelyik kiír egy sort egy bizonyos karakterből és utána az újsor karaktert. Az alábbi kapcsolókat és egy paramétert használunk: -c kar : a kar karaktert írja ki, ha nem adjuk meg az implicit érték a # -n : a program -n kapcsolóval nem ír újsor karaktert a sorozat végén szám : ez a paraméter, csak szám karaktert ír ki, ha nem adjuk meg az implicit érték a 72-t Tehát a használat: hr.sh [ -c kar ] [ -n ] [szám] Példák: $bash hr.sh ################################################################ ### $bash hr.sh -c '.'...... $bash hr.sh -c '.' 10... $bash hr.sh -c '.' -n 10...$ 3. Az egrep és [[...]] használata feltételként 3.1. Az alábbi kis példában az egrep-et használjuk feltételként. A program megnézi, hogy a $1 paraméter végződése.txt -e? #!/bin/bash if [ -z $1 ];then echo "kerek egy argumentumot!" exit 1 fi if echo $1 egrep -q '\.txt$' then echo az argumentum sztring vegzodese '.txt' fi Írjunk egy programot, amelyik egy állományból (pl. egy bash szkript állományból) kiírja azokat a sorokat amelyek # karakterrel kezdődnek, mindaddig amíg megjelenik az első sor amelyik nem # karakterrel kezdődik ( neve legyen: getcomment.sh ). a. oldjuk meg az egrep-el b. oldjuk meg a [[ ]] szerkezettel 6

3.2. Adott egy fájl amelyben Unix felhasználók listája van, pl: peter eva Operációs rendszerek I. - UNIX felhasználói ismeretek és héjprogramozás Írjunk egy szkriptet amelyik kilistázza azokat a felhasználókat amelyeknek van könyvtáruk a /home könyvtár alatt, és nincsenek benne ebben a listában. 3.3 Írjunk egy szkriptet ( pick.sh), amelyik a yes könyvtárból átmásolja azokat az állományokat, amelyekben egy bizonyos szó legalább N-szer szerepel egy másik könyvtárba. Például a: $ pick.sh yes good 2 parancsnak létre kell hoznia egy good nevű könyvtárat, és abba át kell másolnia a longdistance.txt, wurm.txt és a allgood.txt állományokat a yes könyvtárból, amelyekben a good szó 2-szer fordul elő. Tehát az első paraméter a meglevő könyvtár az állományokkal, a második a létrehozandó könyvtár és a keresett szó, a harmadik pedig egy szám: hányszor kell a szónak előfordulnia. A szkript: -ellenőrzi, hogy a forráskönyvtár (yes a fenti példában) létezik -ellenőriznie kell, hogy a létrehozandó könyvtár létezik-e. Ha igen, hibaüzenettel kilép. -létre tudta-e hozni a könyvtárat -át tudta-e másolni helyesen az állományokat -a lefutás után ki kell írni, hány megfelelő állományt kapott A program végigjárja a yes könyvtár állományait megnézi a egrep-pel, hogy hányszor fordul elő az állományban a szó, és ha ez a szám nagyobb mint kettő, akkor átmásolja a good könyvtárba az állományt. A egrep parancs -c kapcsolója adja meg azt, hogy egy minta hány sorban fordul elő: $ egrep -c the yes/timeanda.txt 24 $ egrep -o the yes/timeanda.txt wc -l 29 a -o kapcsolója pedig annyi sort ír ki, ahányszor ténylegesen előfordul, ezt számoljuk a wc paranccsal. 7