Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #----------------------------------------------------
- # 3 feladat - GREP/EGREP példák
- #----------------------------------------------------
- # Készítsen futtatható bash szkriptet, amely végezze el az alábbi feladatokat az utána zárójelben lévő parancsok, megfelelő típusú regurális kifejezések használatával!
- #1 Listázza azon személyek adatait, akik adott hónap 13.-a után születtek, és nem Dunaújvárosiak (egrep, extended regexp)! (2)
- egrep "[0-9]{4}\.[0-9]{2}\.(1[4-9]|[2-3][0-9])\." adat | egrep -v "Dunaújváros"
- #2 Listázza az év középső négy hónapjában született urak nevét, születési idejét, lakóhelyét születési idő szerint csökkenő sorrendben (grep, basic regexp)! (3)
- grep ":úr:[0-9]\{4\}\.0[5-8]\.[0-9]\{2\}\." adat | cut -d ":" -f2,4,5 | sort -t ":" -nrk2
- #1 Listázza azon személyek adatait, akik adott hónap 19.-e előtt születtek, és Budapestiek (grep, basic regexp)! (2)
- grep "[0-9]\{4\}\.[0-9]\{2\}\.\(0[0-9]\|1[0-8]\)\.,Budapest" adat
- #2 Listázza az év utolsó negyedévében született hölgyek nevét, lakóhelyét, fizetését lakóhely szerint csökkenő sorrendben (egrep, extended regexp)! (3)
- egrep ",hölgy,[0-9]{4}\.(09|1[0-2])\.[0-9]{2}\." adat | cut -d "," -f2,5,6 | sort -t "," -rk2
- # További hasonló példák (nem én dolgoztam ki)...
- # Listázza azon urak adatait, akik keresztneve K-betűvel kezdődik, és nem Budapestiek (egrep, extended regexp)?
- egrep -v "Budapest" adat | egrep "\ K" | egrep ",úr,"
- # Listázza az év harmadik negyedévében született hölgyek nevét, születési idejét, születési idő szerint csökkenő sorrendben (grep, basic regexp)?
- grep ",hölgy,[0-9]\{4\}\.0[789]\.[0-9]\{2\}\." adat | cut -d "," -f2,4 | sort -t "," -rk2 | tr "," "\t"
- # Listázza azon urak adatait, akik adott hónap 15.-e előtt születtek, és nem Budapestiek (egrep, extended regexp)?
- egrep -v "Budapest" adat | egrep "úr,[0-9]{4}\.[0-9]{2}\.(0[0-9]|1[0-4])\." | tr "," "\t"
- # Listázza az év első negyedévében született hölgyek nevét, születési idejét, fizetés szerint növekvő sorrendben (grep, basic regexp)?
- grep ",hölgy,[0-9]\{4\}\.0[123]\.[0-9]\{2\}\." adat | cut -d "," -f2,4,6 | sort -t "," -nk3 | tr "," "\t"
- # Listázza azon hölgyek adatait, akik adott hónap 25.-e után születtek, és nem Budapestiek (egrep, extended regexp)?
- egrep -v "Budapest" adat | egrep ",hölgy,[0-9]{4}\.[0-9]{2}\.(2[6-9]|3[01])\."
- # Listázza az év harmadik negyedévében született urak nevét, lakóhelyét, lakóhely szerint csökkenő sorrendben (grep, basic regexp)?
- grep ",úr,[0-9]\{4\}\.0[789]\.[0-9]\{2\}\." adat | cut -d "," -f 2,5 | sort -t "," -rk2
- # Listázza azon hölgyek adatait, akik az adott hónap 12.-e előtt születtek és Dunaújvárosiak (grep, basic regexp)
- grep ':hölgy:[0-9]\{4\}\.[0-9]\{2\}\.\(0[1-9]\|1[01]\)\.' adat | grep ":Dunaújváros:"
- # Listázza az év utolsó negyedévében született urak nevét, lakóhelyét, lakóhely szerint növekvő sorrendben ( egrep, extended regexp )
- egrep ':úr:[0-9]{4}\.1[012]\.' adat | cut -d ":" -f2,5 | sort -t ":" -k2
- # Listázza azon urak adatait, akik adott NEM hónap 15-e előtt születtek és nem is Budapestiek ( grep, basic regexp )
- grep -v "Budapest" adat | grep "úr;[0-9]\{4\}\.[0-9]\{2\}\.\(1[6-9]\|2[0-9]\|3[01]\)\."
- # Listázza az év első negyedévében született hölgyek lakóhelyét, születési idejét, születési idő szerint csökkenő sorrendben.
- egrep 'hölgy:[0-9]{4}\.0[123]\.' adat | awk -F ":" '{print $5 ":" $4}' | sort -t ":" -k2
- # Megjegyzés: itt szerintem inkább cut-ot kellene használni.. Bár a feladat nem tiltja az awk-t sem!
- #----------------------------------------------------
- # 4 feladat - SED példák
- #----------------------------------------------------
- # Készítsen futtatható bash szkriptet (sed felhasználásával mindegyik részfeladatnál). A szkript végezze el a következőket egymástól függetlenül a bemeneti fájlon és az átalakítások eredményeit írja ki egymás után a standard kimenetre!
- # Megjegyzés: a feladat szövege alapján én a kimenetet átirányítottam a standard kimenetre (ami egyébként is az alapértelmezett). Nem hiszem, hogy szükséges, de így is értelmezhető és nem jelent hibát a működése során...
- #1 Azon sorokban, ahol a sorszám 5-re végződik a hölgyek születési idejét és keresztnevét ne jelenítse meg. (2)
- sed -r '{/^[0-9]{3}5\.:[[:alpha:]]*[[:space:]][[:alpha:]]*:hölgy/ s/[[:space:]][[:alpha:]]*:hölgy:[0-9]{4}\.[0-9]{2}\.[0-9]{2}\.:/:hölgy:/}' adat >&1
- #2 Az év első harmadában született urak esetében duplán jelenítse meg az adott sort. (2)
- sed -r '/:úr:[0-9]{4}\.0[1-4]\./ p' adat >&1
- #3 A nem Budapesti urak esetében cserélje meg a név és a születési idő oszlopot. (3)
- sed -r '/Budapest/ ! {/:úr:/ s/([[:alpha:]]*[[:space:]][[:alpha:]]*):([[:alpha:]]*):([0-9]{4}\.[0-9]{2}\.[0-9]{2}\.)/\3:\2:\1/}' adat >&1
- #1 Csak egy adott hónap páros sorszámú napjain született hölgyek adatait listázza. (2)
- sed -nr '/,hölgy,[0-9]{4}\.[0-9]{2}\.[0-9][02468]\.,/ p' adat >&1
- #2 Háromtól kezdve minden hatodik sor után szúrjon be egy üres sort. (2)
- #Megjegyzés: 3-tól kezdve = 3. sor után az első üres sor
- sed -r '4~6 i \\' adat adat >&1
- #3 A Budapesti hölgyek esetében cserélje meg a sorszám és a születési idő oszlopot. (3)
- sed -r '/Budapest/ {/,hölgy,/ s/^([0-9]*\.),([[:alpha:]]*[[:space:]][[:alpha:]]*),([[:alpha:]]*),([0-9]{4}\.[0-9]{2}\.[0-9]{2}\.)/\4,\2,\3,\1/}' adat >&1
- # További hasonló példák (nem én dolgoztam ki)...
- # Az év harmadik negyedévében született urak esetében háromszor jelenítse meg az adott sort.
- sed -r '/;úr;[0-9]{4}\.0[789]\.[0-9]{2}/ {p;p}' adat
- sed -r '/úr/ {/[0-9]{4}\.0[789]\.[0-9]{2}/ p; /[0-9]{4}\.0[789]\.[0-9]{2}/ p}' adat
- # A páros sorszámú sorokban a hölgyek lakóhely és fizetés oszlopát ne jelenítse meg.
- sed -r '2~2 {/hölgy/ s/,[A-Z][[:alpha:]]*,[0-9]*$//}' adat
- # A nem Dunaújvárosi urak esetében cserélje meg a lakóhely és a születési idő oszlopot.
- sed -r '/Dunaújváros/ ! {/úr/ s/([0-9]{4}\.[0-9]{2}\.[0-9]{2}\.),([A-Z][[:alpha:]]*),([0-9]*)$/\2,\1,\3/}' adat
- # Csak az év első negyedévében született hölgyek adatait listázza.
- sed -nr '/hölgy/ {/,[0-9]{4}\.0[123]\.[0-9]{2}\./ p}' adat
- # Kettőtől kezdve minden harmadik sor elé szúrjon be egy üres sort.
- sed -r '2~3 a \\' adat # <-- Ez szebb megoldás
- sed -r '3~3 i \\' adat
- # A Dunaújvárosi hölgyek esetében cserélje meg a születési idő és a lakóhely oszlopot.
- sed -r "/Dunaújváros/ {/hölgy/ s/([0-9]{4}\.[0-9]{2}\.[0-9]{2}\.),([A-Z][[:alpha:]]*),([0-9]*)$/\2,\1,\3/}" adat
- # Háromtól kezdve minden harmadik sor után szúrjon be egy üres sort.
- sed -r '3~3 a \\' adat
- # Csak az év második negyedévében született hölgyek adatait listázza
- sed -nr '/hölgy:[0-9]{4}\.0[456]\./ p' adat
- # A Budapesti hölgyek esetében cserélje meg a sorszám és a lakóhely oszlopot.
- sed -r '/:Budapest:/ {/hölgy/ s/^([0-9]*\.):([[:alpha:]]*[[:space:]][[:alpha:]]*):([[:alpha:]]*):([0-9]{4}\.[0-9]{2}\.[0-9]{2}\.):([[:alpha:]]*)/\5:\2:\3:\4:\1/}' adat
- # A páros sorszámú sorokban a hölgyek születési idő oszlopát kétszer egymás után vesszővel elválasztva, a lakóhely oszlopát ne jelenítse meg.
- sed -r '2~2 {/hölgy/ s/:([0-9]{4}\.[0-9]{2}\.[0-9]{2}\.):([[:alpha:]]*)/:\1,\1/}' adat
- # A nem Budapesti urak esetében duplán jelenítse meg az adott sor.
- sed -r '/Budapest/ ! {/:úr:/ p}' adat
- # Adott hónap 22-e után született urak esetében cserélje meg a név és a fizetés oszlopot.
- sed -r '/:úr:[0-9]{4}\.[0-9]{2}\.(2[3-9]|3[01])\./ s/^([0-9]*\.):([[:alpha:]]*[[:space:]][[:alpha:]]*):([[:alpha:]]):([0-9]{4}\.[0-9]{2}\.[0-9]{2}\.):([[:alpha:]]*):([0-9]*)/\1\6\3\4\5\2/' adat
- #----------------------------------------------------
- # 5 feladat - AWK példák
- #----------------------------------------------------
- # Készítsen futtatható bash szkriptet, amely végezze az alábbi feladatokat az utána zárójelben lévő módon.
- #1 Írja ki azon legidősebb 6 hölgy adatait, akinek a nevében nem szerepel sem a "K" sem az "s" betű, és 83000-nél nem keresnek kevesebbet! Az egyszerűség kedvéért feltételezzük, hogy különböző napokon születtek. (awk) (3)
- sort -t ":" -nk4 adat | awk -F ":" '($3=="hölgy") && ($2!~/[Ks]/) && ($6<=83000)' | head -n6
- #2 Melyik városban lakik a legtöbb úr? Listázzuk az egyes városok neveit, és az ott lakó urak számát, darabszám szerint csökkenő sorrendben. (awk)
- sort -t ":" -k5 adat | awk -F ":" '($3=="úr") {print $5}' | uniq -c | awk -F " " '{print $2 ":" $1}' | sort -t ":" -nrk2
- #1 Írja ki azon legfiatalabb 5 úr adatait, akinek a nevében szerepel a "B" de nem szerepel az "k" betű, és 96000-nél többet keresnek! Az egyszerűség kedvéért feltételezzük, hogy különböző napokon születtek. (awk) (3)
- sort -t "," -nrk4 adat | awk -F "," '($3=="úr") && ($2~/B/) && ($2!~/k/) && ($6>96000)' | head -n5
- #2 Melyik napon született a legtöbb úr? Listázzuk az egyes napok sorszámát, és az akkor született urak számát, darabszám szerint növekvő sorrendben. (awk)
- awk -F "," '($3=="úr") {print $4}' adat | awk -F "." '{print $3}' | sort -n | uniq -c | awk -F " " '{print $2 "," $1}' | sort -t "," -nk2
- # További hasonló példák (nem én dolgoztam ki)...
- # Írja ki azon legidősebb 4 úr adatait, akinek a nevében nem szerepel sem a “T” sem a “p” betű, és 79000-nél nem keresnek többet! (awk felhasználásával)
- sort -t "," -k4 adat | awk -F "," '($3=="úr") && ($2!~/[Tp]/) && ($6<=79000)' | head -n4
- # Melyik városban él a legtöbb úr? Listázzuk az egyes városok neveit, és az ott élő urak számát, darabszám szerint növekvő sorrendben. (awk felhasználásával)
- sort -t "," -k5 adat | awk -F "," '($3=="úr") {print $5}' | uniq -c | awk -F " " '{print $2 "," $1}' | sort -t "," -nk2 | tr "," "\t"
- # Írja ki azon legfiatalabb 3 hölgy adatait, akinek a nevében szerepel a “P” és a “n” betű, és 90000-nél többet keresnek! (awk felhasználásával)
- sort -t "," -rk4 adat | awk -F "," '($3=="hölgy") && ($2~/[Pn]/) && ($6>90000)' | head -n3
- # Hányadikán született a legtöbb úr? Listázzuk a hónapok egyes napjait, és az azon a napon született urak számát, darabszám szerint növekvő sorrendben. (awk felhasználásával)
- awk -F "," '($3=="úr") {print $4}' adat | awk -F "." '{print $3}' | sort | uniq -c | awk -F " " '{print $2 "," $1}' | sort -t "," -nk2 | tr "," "\t"
- # Írja ki azon legfiatalabb 3 úr adatait, akinek a nevében szerepel a "B", de nem szerepel az "s" betű, és 93000-nél többet keresnek!
- sort -t ":" -rk4 adat | awk -F ":" '($3=="úr") && ($2~/[B]/) && ($2!~/[s]/) && ($6>93000)' | head -n3
- # Melyik fizetés a leggyakoribb az urak körében? Listázzuk az egyes fizetéseket és az adott sösszeget kereső urak számát, darabszám szerint csökkenő sorrendben.
- sort -t ":" -nk6 adat | awk -F ":" '($3=="úr") {print $6}' | uniq -c | awk -F " " '{print $2 ":" $1}' | sort -t ":" -rnk2
- # Írja ki azon legidősebb 6 hölgy adatait, akinek a nevében nem szerepel a "P" betű, de szerepel a "k" betű, és 97000-nél nem keresnek többet.
- sort -t ":" -k4 adat | awk -F ":" '($3=="hölgy") && ($2!~/[P]/) && ($2~/[k]/) && ($6<=97000)' | head -n6
- # Melyik keresztnév a leggyakoribb az urak körében? Listázzuk az egyes keresztneveket, és az adott névvel rendelkező urak darabszámát, darabszám szerint növekvő sorrendben.
- awk -F ":" '($3=="úr") {print $2}' adat | awk -F " " '{print $2}' | sort | uniq -c | awk -F " " '{print $2 ":" $1}' | sort -t ":" -nk2
Advertisement
Add Comment
Please, Sign In to add comment