Advertisement
Xetos

OS regkif awk

Apr 3rd, 2016
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 9.45 KB | None | 0 0
  1. Griechisch Erika - előző éves gyakorlati anyag       33. oldal
  2.  
  3. ******************  IP cím kiszűrés egrep paranccsal  *********************************
  4.  
  5. egrep '((2[0-5][0-5]|1[0-9][0-9]|[1-9][1-9]|[0-9])\.){3}[0-9]{1,3}' emailip.txt
  6.  
  7. ***************************************************************************************
  8.  
  9.  
  10.  
  11. ***************************** email ***********************************
  12.  
  13. egrep '[0-Z]{3}\@{1}.{3,}.[a-z]{2,}' emailip.txt
  14. egrep '[0-Z\-\_\.]{3,}\@[0-Z\-\_\.]{3,}.[a-z]{2,}' emailip.txt
  15.  
  16. ***********************************************************************
  17.  
  18. ******************* asztal on hoz rol ra *******************
  19.  
  20. ^asztal(on|ra|hoz|rol)$' emailip.txt
  21.  
  22. ************************************************************
  23.  
  24.  
  25.  
  26.  
  27. ******************* ZH feladat *************************************
  28.  
  29. cut -d";" -f4 szamok.csv | sort -n | uniq | tail -n 7 > max.txt
  30.  
  31. ********************************************************************
  32.  
  33.  
  34.  
  35.  
  36. '^d'
  37. '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
  38. '([a-z]|[A-Z]|[0-9]|[\_\.]){3,}\@([a-z]|[A-Z]|[0-9]|[\_\.]){3,}\.([a-z]|[A-Z]|[0-9]|[\_\.]){2,}'
  39. '(()|[ ])[Nn]em(()|[\.!\?, ])'
  40.  
  41.  
  42.  
  43. echo A kereses.txt fajlban
  44. echo ---------------------
  45. echo    Három pontot tartalmazó sorok: ; echo
  46.  
  47. egrep '\.{3}' kereses.txt
  48.  
  49.  
  50. echo ---------------------
  51. echo    Legalább 6 karaktert tartalmazó sorok: ; echo
  52.  
  53. egrep '.{6,}' kereses.txt
  54.  
  55. echo ---------------------
  56. echo Legfeljebb 7, de legalább 3 egymást követõ számjegyet tartalmazó sorok:
  57. echo
  58.  
  59. egrep '[0-9]{3,7}' kereses.txt
  60.  
  61. echo ---------------------
  62. echo A csupa 1-est tartalmazó sorok; echo
  63.  
  64. egrep '^1+$' kereses.txt
  65.  
  66. echo ---------------------
  67. echo Az asztalon, asztalra, asztalhoz, asztalról szavakat tartalmazó sorok:
  68. echo
  69.  
  70. egrep 'asztal(on|ra|hoz|ról)' kereses.txt
  71.  
  72. echo    Írjunk egy olyan parancsot, amely megszámolja, hány olyan fájl van
  73. echo    a munkakönyvtárban, melynek neve pontosan egy pontot \(.\) tartalmaz!
  74.  
  75. ls -a | egrep -c '^[^.]*\.[^.]*$'
  76.  
  77. echo    ---------------------------------------------------------------
  78. echo    Keressük ki a kereses.txt fájlból a grep segítségével azokat a
  79. echo    sorokat, melyekben van 3 betûs szó \(nem számolva a sor eleji és
  80. echo    végi szavakkal\) !
  81.  
  82. egrep '[ ]...[ ]' kereses.txt
  83.  
  84.  
  85. echo    ---------------------------------------------------------------
  86. echo    Írjunk parancsot, mely megszámolja, hány nem magánhangzóval
  87. echo    kezdõdõ sor van a szoveg fájlban!
  88.  
  89. grep '^[^AEUIOaeuio]' szoveg
  90.  
  91. echo Ip-szamok kiszurese, lepesek\:
  92. echo  ---------------------------------------------------------------- ;echo
  93.  
  94. egrep '[0-9]{3}' szoveg
  95. echo  ---------------------------------------------------------------- ; echo
  96.  
  97. egrep '^[0-9]{1,3}\.' szoveg
  98. echo  ---------------------------------------------------------------- ; echo
  99.  
  100.  
  101. egrep '^([0-9]{1,3}\.){3}' szoveg
  102.  
  103. echo  ---------------------------------------------------------------- ; echo
  104. egrep '^([0-9]{1,3}\.){3}[0-9]{1,3}' szoveg
  105.  
  106. echo    Írjunk szabályos kifejezést a következõkre és keressünk velük a
  107. echo    proba.txt fájlban:
  108. echo    --------------------------------- ; echo
  109. echo    '1. IP-cím (pl.: 160.114.80.80)' ; echo
  110.  
  111.  
  112. egrep '([0-9]{1,3}\.){3}[0-9]{1,3}' szoveg
  113.  
  114.  
  115. echo    --------------------------------- ; echo
  116. echo    'MAC-cím (pl.: AF:08:A7:DF:12:BC)' ; echo
  117.  
  118.  
  119. egrep '([0-9a-fA-F]{1,2}\:){5}[0-9a-fA-F]{1,2}' szoveg
  120.  
  121.  
  122. echo    --------------------------------- ; echo
  123. echo    '3. Dátum (pl.: 2005.03.08. vagy 99.12.31.)' ; echo
  124. egrep '[0-9]{2,4}\.([0-9]{1,2}\.){2}' szoveg
  125.  
  126.  
  127. echo    --------------------------------- ; echo
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137. #! /bin/bash
  138. #Írj egy szabályos BASH scriptet, ami az alábbiakat tartalmazza!
  139. #(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)
  140. #(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ó).
  141. UTVONAL=$1
  142. if (echo $UTVONAL | egrep -q '^/dev'); then
  143.     LINKEK=0
  144.     LISTA=$(ls $UTVONAL)
  145.     for FAJL in $LISTA; do
  146.         if [ -h "${UTVONAL}${FAJL}" ]; then
  147.             LINKEK=$(( $LINKEK + 1 ))
  148.         fi
  149.     done
  150.     echo $LINKEK
  151. else
  152.     echo "Hibás útvonal"
  153. fi
  154.  
  155.  
  156. #! /bin/bash
  157. #Írj egy szabályos BASH scriptet, ami az alábbiakat tartalmazza!
  158. #(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)
  159. #(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ó).
  160. UTVONAL=$1
  161. MINTA=~
  162. # Elfogadtam, akkor is, ha nem így van megadva a ~, hanem például a regexpben.
  163. if (echo $UTVONAL | egrep -q "^$MINTA"); then
  164.     ls -l $UTVONAL | egrep -c '^-'
  165. else
  166.     echo "Hibás útvonal"
  167. fi
  168.  
  169.  
  170.  
  171.  
  172. #! /bin/bash
  173. #Írj egy szabályos BASH scriptet, ami az alábbiakat tartalmazza!
  174. #(1) Paraméterként fogad egy útvonalat, amit leellenőriz reguláris kifejezéssel, hogy abszolút útvonal-e (/ -val kezdődik-e)
  175. #(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ó).
  176. UTVONAL=$1
  177. if (echo $UTVONAL | egrep -q "^/"); then
  178.     ls -l $UTVONAL | egrep -c '^d'
  179. else
  180.     echo "Hibás útvonal"
  181. fi
  182.  
  183.  
  184. #! /bin/bash
  185. email=$1
  186. 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,}')
  187. if [ $? -eq 0 ]; then
  188. #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.
  189. #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,}')
  190. #if (( $DB > 0 )); then
  191.     echo "OK"
  192. else
  193.     echo "NO $?"
  194. fi
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213. ********************************************             AWK             ******************************************
  214. • Az aktuális könyvtár olyan bejegyzéseinek hosszú kilistázása, amelyeknek
  215. tulajdonosa a „h012345” azonosítójú felhasználó.
  216.  
  217.         ls -l | awk ’$3 == ”h012345” { print }’
  218.     Az ls -l kimenetében a 3. oszlop (mező) tartalmazza a tulajdonos
  219.     felhasználó azonosítóját. A paraméter nélküli print az egész sor (rekord)
  220. tartalmát kiírja.
  221.  
  222. • Az aktuális könyvtár augusztusi keltezésű alkönyvtárai nevének kiírása,
  223. mindegyiket külön sorba.
  224.         ls -l | awk ’/^d/ && ($6 == ”Aug”) { print $9 }’
  225.     Az alkönyvtárak típusát a sor elején álló „d” jelzi. A dátum hónapja a
  226.     hatodik, míg a bejegyzés neve a kilencedik oszlopban (mezőben) található.
  227.  
  228. • Az aktuális könyvtár olyan állományai nevének kiírása, amelyek mérete
  229. nagyobb, mint 100 bájt, és a nevük tartalmaz „b” betűt. Mindegyik nevet
  230. külön sorba írjuk ki.
  231.         ls -l | awk ’($5 > 100) && ($9 ~ /b/) { print $9 }’
  232.     A méretet az ötödik oszlop (mező) tárolja. A minta második részkifejezése
  233.     csak akkor teljesül egy sorra (rekordra), ha az állománynév illeszkedik a b
  234.     reguláris kifejezésre (azaz tartalmaz „b” betűt).
  235.  
  236. • Az üres – pontosabban legfeljebb csak szóközöket és tabulátort tartalmazó –
  237. sorok kihagyása a bemenetből.
  238.         NF > 0
  239.     Ne feledjük, hogy a hiányzó akció ekvivalens a { print } akcióval.
  240.  
  241.  
  242. • Kiírja, hogy mennyi sorból állt a bemenet.
  243.         END { print NR }
  244.     Emlékezzünk vissza, hogy az END mintájú szabály akciója csak a bemenet
  245.     feldolgozása után fut le.
  246.  
  247. • A bemenet páratlan sorszámú sorainak kiszűrése, azaz csak a páros
  248. sorszámú sorok jelennek meg.
  249.         NR % 2 == 0
  250.  
  251. • A bemenet minden sora elé annak sorszámát is kiírjuk. Több bemeneti
  252. állomány esetén a sorszám folytatólagos lesz.
  253.         { print NR,$0 }
  254.     Kihasználtuk, hogy a minta elhagyása esetén az illető akció minden rekordra
  255.     (most sorra) végrehajtódik. Az aktuális sor (rekord) tartalmát $0
  256.     tartalmazza.
  257.  
  258. • A bemenet soraiban felcseréli az első két szót.
  259.         { szo = $1; $1 = $2; $2 = szo; print }
  260.     Az első szó (mező) tartalmát ideiglenesen a szo változóba tároltuk el.
  261.     Vigyázzunk, mert a mezők értékének megváltoztatásakor a $0 értéke
  262.     újraszámítódik (ld. egy későbbi példában)!
  263.  
  264. • A 10 karakternél hosszabb sorok kiírása.
  265.     length($0) > 10
  266.  
  267. • Minden sorból csak az utolsó 2 szó kiírása.
  268.         NF < 2
  269.         NF >= 2 { print $(NF - 1),$NF }
  270.     Mindenképpen meg kell vizsgálni, hogy a sor legalább 2 szót (mezőt)
  271.     tartalmaz-e, különben a mezőhivatkozás érvénytelen lehetne, ill. a $0 esetén
  272.     az egész sort (rekordot) megjelenítenénk.
  273.  
  274. • A bemenet minden sorát csupa nagybetűssé varázsolja.
  275.         { print toupper($0) }
  276.  
  277. • A bemenet minden szavát külön sorba írja ki.
  278.         { for (i = 1; i <= NF; i++) print $i }
  279.  
  280. • Most a bemenet szavait megszakítás nélkül ugyanabba a sorba írjuk ki úgy,
  281. hogy a szavak közé még szóközt sem teszünk.
  282.         { for (i = 1; i <= NF; i++) printf ”%s”,$i }
  283.         END { printf ”\n” }
  284.     A kiíratáshoz a printf utasítást használtuk, hogy elkerüljük a sortörés
  285.     kiírását. A formátumban a %s egy szöveges paramétert (pontosabban
  286.     szöveges konverziót) jelöl. A bemenet vége után a rend kedvéért egy
  287.     sortörést (\n) is megjelenítünk. (Az utóbbi tevékenység helyettesíthető
  288.     lenne a print ”” utasítással is.)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement