Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Griechisch Erika - előző éves gyakorlati anyag 33. oldal
- ****************** IP cím kiszűrés egrep paranccsal *********************************
- egrep '((2[0-5][0-5]|1[0-9][0-9]|[1-9][1-9]|[0-9])\.){3}[0-9]{1,3}' emailip.txt
- ***************************************************************************************
- ***************************** email ***********************************
- egrep '[0-Z]{3}\@{1}.{3,}.[a-z]{2,}' emailip.txt
- egrep '[0-Z\-\_\.]{3,}\@[0-Z\-\_\.]{3,}.[a-z]{2,}' emailip.txt
- ***********************************************************************
- ******************* asztal on hoz rol ra *******************
- ^asztal(on|ra|hoz|rol)$' emailip.txt
- ************************************************************
- ******************* ZH feladat *************************************
- cut -d";" -f4 szamok.csv | sort -n | uniq | tail -n 7 > max.txt
- ********************************************************************
- '^d'
- '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
- '([a-z]|[A-Z]|[0-9]|[\_\.]){3,}\@([a-z]|[A-Z]|[0-9]|[\_\.]){3,}\.([a-z]|[A-Z]|[0-9]|[\_\.]){2,}'
- '(()|[ ])[Nn]em(()|[\.!\?, ])'
- echo A kereses.txt fajlban
- echo ---------------------
- echo Három pontot tartalmazó sorok: ; echo
- egrep '\.{3}' kereses.txt
- echo ---------------------
- echo Legalább 6 karaktert tartalmazó sorok: ; echo
- egrep '.{6,}' kereses.txt
- echo ---------------------
- echo Legfeljebb 7, de legalább 3 egymást követõ számjegyet tartalmazó sorok:
- echo
- egrep '[0-9]{3,7}' kereses.txt
- echo ---------------------
- echo A csupa 1-est tartalmazó sorok; echo
- egrep '^1+$' kereses.txt
- echo ---------------------
- echo Az asztalon, asztalra, asztalhoz, asztalról szavakat tartalmazó sorok:
- echo
- egrep 'asztal(on|ra|hoz|ról)' kereses.txt
- echo Írjunk egy olyan parancsot, amely megszámolja, hány olyan fájl van
- echo a munkakönyvtárban, melynek neve pontosan egy pontot \(.\) tartalmaz!
- ls -a | egrep -c '^[^.]*\.[^.]*$'
- echo ---------------------------------------------------------------
- echo Keressük ki a kereses.txt fájlból a grep segítségével azokat a
- echo sorokat, melyekben van 3 betûs szó \(nem számolva a sor eleji és
- echo végi szavakkal\) !
- egrep '[ ]...[ ]' kereses.txt
- echo ---------------------------------------------------------------
- echo Írjunk parancsot, mely megszámolja, hány nem magánhangzóval
- echo kezdõdõ sor van a szoveg fájlban!
- grep '^[^AEUIOaeuio]' szoveg
- echo Ip-szamok kiszurese, lepesek\:
- echo ---------------------------------------------------------------- ;echo
- egrep '[0-9]{3}' szoveg
- echo ---------------------------------------------------------------- ; echo
- egrep '^[0-9]{1,3}\.' szoveg
- echo ---------------------------------------------------------------- ; echo
- egrep '^([0-9]{1,3}\.){3}' szoveg
- echo ---------------------------------------------------------------- ; echo
- egrep '^([0-9]{1,3}\.){3}[0-9]{1,3}' szoveg
- echo Írjunk szabályos kifejezést a következõkre és keressünk velük a
- echo proba.txt fájlban:
- echo --------------------------------- ; echo
- echo '1. IP-cím (pl.: 160.114.80.80)' ; echo
- egrep '([0-9]{1,3}\.){3}[0-9]{1,3}' szoveg
- echo --------------------------------- ; echo
- echo 'MAC-cím (pl.: AF:08:A7:DF:12:BC)' ; echo
- egrep '([0-9a-fA-F]{1,2}\:){5}[0-9a-fA-F]{1,2}' szoveg
- echo --------------------------------- ; echo
- echo '3. Dátum (pl.: 2005.03.08. vagy 99.12.31.)' ; echo
- egrep '[0-9]{2,4}\.([0-9]{1,2}\.){2}' szoveg
- echo --------------------------------- ; echo
- #! /bin/bash
- #Írj egy szabályos BASH scriptet, ami az alábbiakat tartalmazza!
- #(1) Paraméterként fogad egy útvonalat, amit leellenőriz reguláris kifejezéssel, hogy /dev mappa vagy annak almappája-e az útvonal (/dev -vel kezdődik-e)
- #(2) Végignézi a megadott útvonalon található állományokat és kiírja az ott található szimbolikus linkek számát (nem kell rekurzió).
- UTVONAL=$1
- if (echo $UTVONAL | egrep -q '^/dev'); then
- LINKEK=0
- LISTA=$(ls $UTVONAL)
- for FAJL in $LISTA; do
- if [ -h "${UTVONAL}${FAJL}" ]; then
- LINKEK=$(( $LINKEK + 1 ))
- fi
- done
- echo $LINKEK
- else
- echo "Hibás útvonal"
- fi
- #! /bin/bash
- #Írj egy szabályos BASH scriptet, ami az alábbiakat tartalmazza!
- #(1) Paraméterként fogad egy útvonalat, amit leellenőriz reguláris kifejezéssel, hogy a home könyvtárból induló abszolút útvonal-e (~ -al kezdődik-e)
- #(2) Végignézi a megadott útvonalon található állományokat és kiírja az ott található egyszerű állományok (file-ok) számát (nem kell rekurzió).
- UTVONAL=$1
- MINTA=~
- # Elfogadtam, akkor is, ha nem így van megadva a ~, hanem például a regexpben.
- if (echo $UTVONAL | egrep -q "^$MINTA"); then
- ls -l $UTVONAL | egrep -c '^-'
- else
- echo "Hibás útvonal"
- fi
- #! /bin/bash
- #Írj egy szabályos BASH scriptet, ami az alábbiakat tartalmazza!
- #(1) Paraméterként fogad egy útvonalat, amit leellenőriz reguláris kifejezéssel, hogy abszolút útvonal-e (/ -val kezdődik-e)
- #(2) Végignézi a megadott útvonalon található állományokat és kiírja az ott található könyvtárak számát (nem kell rekurzió).
- UTVONAL=$1
- if (echo $UTVONAL | egrep -q "^/"); then
- ls -l $UTVONAL | egrep -c '^d'
- else
- echo "Hibás útvonal"
- fi
- #! /bin/bash
- email=$1
- PARANCS=$(echo $email | egrep -q '([a-z]|[A-Z]|[0-9]|[\_\.]){3,}\@([a-z]|[A-Z]|[0-9]|[\_\.]){3,}\.([a-z]|[A-Z]|[0-9]|[\_\.]){2,}')
- if [ $? -eq 0 ]; then
- #Alternatív megoldási lehetőség, a darabszám vizsgálatával (ha 1 akkor van találta, ha 0 akkor nincs). Kommenteld be a felette lévő két sort és ki az alatta lévő kettőt.
- #DB=$(echo $email | egrep -c '([a-z]|[A-Z]|[0-9]|[\_\.]){3,}\@([a-z]|[A-Z]|[0-9]|[\_\.]){3,}\.([a-z]|[A-Z]|[0-9]|[\_\.]){2,}')
- #if (( $DB > 0 )); then
- echo "OK"
- else
- echo "NO $?"
- fi
- ******************************************** AWK ******************************************
- • Az aktuális könyvtár olyan bejegyzéseinek hosszú kilistázása, amelyeknek
- tulajdonosa a „h012345” azonosítójú felhasználó.
- ls -l | awk ’$3 == ”h012345” { print }’
- Az ls -l kimenetében a 3. oszlop (mező) tartalmazza a tulajdonos
- felhasználó azonosítóját. A paraméter nélküli print az egész sor (rekord)
- tartalmát kiírja.
- • Az aktuális könyvtár augusztusi keltezésű alkönyvtárai nevének kiírása,
- mindegyiket külön sorba.
- ls -l | awk ’/^d/ && ($6 == ”Aug”) { print $9 }’
- Az alkönyvtárak típusát a sor elején álló „d” jelzi. A dátum hónapja a
- hatodik, míg a bejegyzés neve a kilencedik oszlopban (mezőben) található.
- • Az aktuális könyvtár olyan állományai nevének kiírása, amelyek mérete
- nagyobb, mint 100 bájt, és a nevük tartalmaz „b” betűt. Mindegyik nevet
- külön sorba írjuk ki.
- ls -l | awk ’($5 > 100) && ($9 ~ /b/) { print $9 }’
- A méretet az ötödik oszlop (mező) tárolja. A minta második részkifejezése
- csak akkor teljesül egy sorra (rekordra), ha az állománynév illeszkedik a b
- reguláris kifejezésre (azaz tartalmaz „b” betűt).
- • Az üres – pontosabban legfeljebb csak szóközöket és tabulátort tartalmazó –
- sorok kihagyása a bemenetből.
- NF > 0
- Ne feledjük, hogy a hiányzó akció ekvivalens a { print } akcióval.
- • Kiírja, hogy mennyi sorból állt a bemenet.
- END { print NR }
- Emlékezzünk vissza, hogy az END mintájú szabály akciója csak a bemenet
- feldolgozása után fut le.
- • A bemenet páratlan sorszámú sorainak kiszűrése, azaz csak a páros
- sorszámú sorok jelennek meg.
- NR % 2 == 0
- • A bemenet minden sora elé annak sorszámát is kiírjuk. Több bemeneti
- állomány esetén a sorszám folytatólagos lesz.
- { print NR,$0 }
- Kihasználtuk, hogy a minta elhagyása esetén az illető akció minden rekordra
- (most sorra) végrehajtódik. Az aktuális sor (rekord) tartalmát $0
- tartalmazza.
- • A bemenet soraiban felcseréli az első két szót.
- { szo = $1; $1 = $2; $2 = szo; print }
- Az első szó (mező) tartalmát ideiglenesen a szo változóba tároltuk el.
- Vigyázzunk, mert a mezők értékének megváltoztatásakor a $0 értéke
- újraszámítódik (ld. egy későbbi példában)!
- • A 10 karakternél hosszabb sorok kiírása.
- length($0) > 10
- • Minden sorból csak az utolsó 2 szó kiírása.
- NF < 2
- NF >= 2 { print $(NF - 1),$NF }
- Mindenképpen meg kell vizsgálni, hogy a sor legalább 2 szót (mezőt)
- tartalmaz-e, különben a mezőhivatkozás érvénytelen lehetne, ill. a $0 esetén
- az egész sort (rekordot) megjelenítenénk.
- • A bemenet minden sorát csupa nagybetűssé varázsolja.
- { print toupper($0) }
- • A bemenet minden szavát külön sorba írja ki.
- { for (i = 1; i <= NF; i++) print $i }
- • Most a bemenet szavait megszakítás nélkül ugyanabba a sorba írjuk ki úgy,
- hogy a szavak közé még szóközt sem teszünk.
- { for (i = 1; i <= NF; i++) printf ”%s”,$i }
- END { printf ”\n” }
- A kiíratáshoz a printf utasítást használtuk, hogy elkerüljük a sortörés
- kiírását. A formátumban a %s egy szöveges paramétert (pontosabban
- szöveges konverziót) jelöl. A bemenet vége után a rend kedvéért egy
- sortörést (\n) is megjelenítünk. (Az utóbbi tevékenység helyettesíthető
- lenne a print ”” utasítással is.)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement