Linux:Sed és awk
(Változatok közti eltérés) (→Awk) |
|||
(9 közbeeső változat nincs mutatva) | |||
1. sor: | 1. sor: | ||
== Sed == | == Sed == | ||
- | * Készíts shell scripet, mely egy megadott fájl tartalmát úgy jeleníti meg, hogy az összes < | + | * Készíts shell scripet, mely egy megadott fájl tartalmát úgy jeleníti meg, hogy az összes <u>this</u> szót cseréli a <u>that</u> szóra! <megoldas> |
<code lang="bash"> | <code lang="bash"> | ||
#!/bin/bash | #!/bin/bash | ||
33. sor: | 33. sor: | ||
cat /etc/passwd | awk -F: '{ print $1; }' | cat /etc/passwd | awk -F: '{ print $1; }' | ||
</code></megoldas> | </code></megoldas> | ||
- | + | * Készíts programot, mely kiszámítja a 3 négyzetét! A kiíráshoz használd a printf() függvényt! <megoldas> | |
- | * Készíts programot, mely kiszámítja a 3 négyzetét! A kiíráshoz használd a printf() függvényt! | + | |
<code lang="bash"> <megoldas> | <code lang="bash"> <megoldas> | ||
#!/bin/bash | #!/bin/bash | ||
cat /etc/passwd | awk -F: ' | cat /etc/passwd | awk -F: ' | ||
BEGIN { | BEGIN { | ||
- | printf ("3^ | + | printf ("3^2=%d\n",3^2) ; |
}' | }' | ||
</code></megoldas> | </code></megoldas> | ||
- | |||
* Írasd ki a /etc/passwd fájlban található UID-eket lebegőpontos (6 egész és 2 tizedes), egész, oktális és hexadecimális számként, végül jelenítsd meg a felhasználó bejelentkezési nevét is! <megoldas> | * Írasd ki a /etc/passwd fájlban található UID-eket lebegőpontos (6 egész és 2 tizedes), egész, oktális és hexadecimális számként, végül jelenítsd meg a felhasználó bejelentkezési nevét is! <megoldas> | ||
<code lang="bash"> | <code lang="bash"> | ||
51. sor: | 49. sor: | ||
}' | }' | ||
</code></megoldas> | </code></megoldas> | ||
- | |||
* Írasd ki a /etc/passwd fájl tartalmát nagybetűssé alakítva! Az egyes sorok legyenek sorszámozva! <megoldas> | * Írasd ki a /etc/passwd fájl tartalmát nagybetűssé alakítva! Az egyes sorok legyenek sorszámozva! <megoldas> | ||
<code lang="bash"> | <code lang="bash"> | ||
#!/bin/bash | #!/bin/bash | ||
FILE="/etc/passwd" | FILE="/etc/passwd" | ||
- | cat $FILE | awk -F ' | + | cat $FILE | awk -F: ' |
{ | { | ||
printf ("%d: %s\n", NR, toupper($0)); | printf ("%d: %s\n", NR, toupper($0)); | ||
}' | }' | ||
</code></megoldas> | </code></megoldas> | ||
- | |||
* Számítsd ki a /etc/passwd fájlban levő UID-ek összegét és átlagát! (Tudjuk, hogy ez az adat semmire sem utal, csupán azért használjuk ezt a fájlt, mert minden rendszerben megtalálható.) <megoldas> | * Számítsd ki a /etc/passwd fájlban levő UID-ek összegét és átlagát! (Tudjuk, hogy ez az adat semmire sem utal, csupán azért használjuk ezt a fájlt, mert minden rendszerben megtalálható.) <megoldas> | ||
<code lang="bash"> | <code lang="bash"> | ||
77. sor: | 73. sor: | ||
}' | }' | ||
</code></megoldas> | </code></megoldas> | ||
- | |||
* Írd ki a képernyőre a /etc/group fájl leghosszabb sorát! [Módosíthatod a feladatot úgy, hogy a legrövidebb nem üres sort jelentítsd meg!] <megoldas> | * Írd ki a képernyőre a /etc/group fájl leghosszabb sorát! [Módosíthatod a feladatot úgy, hogy a legrövidebb nem üres sort jelentítsd meg!] <megoldas> | ||
<code lang="bash"> | <code lang="bash"> | ||
98. sor: | 93. sor: | ||
}' | }' | ||
</code></megoldas> | </code></megoldas> | ||
- | |||
* Ellenőrizd, hogy mely felhasználóknak van 0-s UID-jük a /etc/passwd-ben! (Ezek teljes jogkörrel rendelkeznek a Unix rendszerekben.) <megoldas> | * Ellenőrizd, hogy mely felhasználóknak van 0-s UID-jük a /etc/passwd-ben! (Ezek teljes jogkörrel rendelkeznek a Unix rendszerekben.) <megoldas> | ||
<code lang="bash"> | <code lang="bash"> | ||
110. sor: | 104. sor: | ||
}' | }' | ||
</code></megoldas> | </code></megoldas> | ||
- | |||
* Jelenítsd meg az acer.txt fájl sorait úgy, hogy a 40 karakternél hosszabb sorokat ne teljes hosszukban, hanem csak az első 40 karakterig írd ki, és annak jelzésére, hogy a sor ennél hosszabb, a végére írj három pontot! Minden sor elején jelenjen meg, hogy mekkora annak teljes hossza! <megoldas> | * Jelenítsd meg az acer.txt fájl sorait úgy, hogy a 40 karakternél hosszabb sorokat ne teljes hosszukban, hanem csak az első 40 karakterig írd ki, és annak jelzésére, hogy a sor ennél hosszabb, a végére írj három pontot! Minden sor elején jelenjen meg, hogy mekkora annak teljes hossza! <megoldas> | ||
<code lang="bash"> | <code lang="bash"> | ||
129. sor: | 122. sor: | ||
}' | }' | ||
</code></megoldas> | </code></megoldas> | ||
- | |||
* Jelenítsd meg a 10-nél kisebb pozitív egész számokat és négyzeteiket! <megoldas> | * Jelenítsd meg a 10-nél kisebb pozitív egész számokat és négyzeteiket! <megoldas> | ||
<code lang="bash"> | <code lang="bash"> | ||
139. sor: | 131. sor: | ||
} | } | ||
</code></megoldas> | </code></megoldas> | ||
- | |||
* Jelenítsd meg az /etc/passwd fájl sorait úgy, hogy a mezőket visszafelé íratod ki! Azaz az első mező utolsóként, a második utolsó előttiként, az utolsó pedig elsőként jelenjen meg! <megoldas> | * Jelenítsd meg az /etc/passwd fájl sorait úgy, hogy a mezőket visszafelé íratod ki! Azaz az első mező utolsóként, a második utolsó előttiként, az utolsó pedig elsőként jelenjen meg! <megoldas> | ||
<code lang="bash"> | <code lang="bash"> | ||
149. sor: | 140. sor: | ||
}' | }' | ||
</code></megoldas> | </code></megoldas> | ||
- | + | * Jelenítsd meg az /etc/passwd fájlt úgy, hogy minden sort visszafelé íratsz ki! <megoldas> | |
- | * Jelenítsd | + | |
<code lang="bash"> | <code lang="bash"> | ||
- | cat | + | cat /etc/passwd | grep -v ^# | awk -F' ' ' |
function printRev(x) { | function printRev(x) { | ||
168. sor: | 158. sor: | ||
}’ | }’ | ||
</code></megoldas> | </code></megoldas> | ||
- | |||
* Írasd ki az /etc/passwd fájt sorait visszafelé, azaz a legutolsó sor jelenjen meg elsőként, az első pedig utolsóként! <megoldas> | * Írasd ki az /etc/passwd fájt sorait visszafelé, azaz a legutolsó sor jelenjen meg elsőként, az első pedig utolsóként! <megoldas> | ||
<code lang="bash"> | <code lang="bash"> | ||
179. sor: | 168. sor: | ||
}' | }' | ||
</code></megoldas> | </code></megoldas> | ||
- | |||
- | |||
* Készíts a /tmp/szolista.txt fájl szavairól előfordulási gyakoriságukat tartalmazó listát! A lista legyen rendezett, elöl a legtöbbet előforduló szó szerepeljen! Példa a kimenetre: | * Készíts a /tmp/szolista.txt fájl szavairól előfordulási gyakoriságukat tartalmazó listát! A lista legyen rendezett, elöl a legtöbbet előforduló szó szerepeljen! Példa a kimenetre: | ||
**292 the | **292 the | ||
**166 a | **166 a | ||
**156 of <megoldas> | **156 of <megoldas> | ||
- | |||
<code lang="bash"> | <code lang="bash"> | ||
#!/bin/bash | #!/bin/bash | ||
201. sor: | 187. sor: | ||
}' | sort -n -r | more | }' | sort -n -r | more | ||
</code></megoldas> | </code></megoldas> | ||
- | |||
* Készíts gyakorisági listát a /etc/passwd fájlban található shellekről, melyik hányszor fordul elő? <megoldas> | * Készíts gyakorisági listát a /etc/passwd fájlban található shellekről, melyik hányszor fordul elő? <megoldas> | ||
<code lang="bash"> | <code lang="bash"> |
A lap jelenlegi, 2013. április 23., 09:04-kori változata
Sed
- Készíts shell scripet, mely egy megadott fájl tartalmát úgy jeleníti meg, hogy az összes this szót cseréli a that szóra!
- Az előző feladatot oldd meg úgy, hogy a módosított szöveget írd vissza az eredeti fájlba! A módosítás előtti állapotról .bak kiterjesztéssel készüljön egy biztonsági másolat!
Awk
- Készíts awk programot, mely a /etc/passwd fájlból kiírja a felhasználók bejelentkezési neveit!
- Készíts programot, mely kiszámítja a 3 négyzetét! A kiíráshoz használd a printf() függvényt!
- Írasd ki a /etc/passwd fájlban található UID-eket lebegőpontos (6 egész és 2 tizedes), egész, oktális és hexadecimális számként, végül jelenítsd meg a felhasználó bejelentkezési nevét is!
- Írasd ki a /etc/passwd fájl tartalmát nagybetűssé alakítva! Az egyes sorok legyenek sorszámozva!
- Számítsd ki a /etc/passwd fájlban levő UID-ek összegét és átlagát! (Tudjuk, hogy ez az adat semmire sem utal, csupán azért használjuk ezt a fájlt, mert minden rendszerben megtalálható.)
- Írd ki a képernyőre a /etc/group fájl leghosszabb sorát! [Módosíthatod a feladatot úgy, hogy a legrövidebb nem üres sort jelentítsd meg!]
- Ellenőrizd, hogy mely felhasználóknak van 0-s UID-jük a /etc/passwd-ben! (Ezek teljes jogkörrel rendelkeznek a Unix rendszerekben.)
- Jelenítsd meg az acer.txt fájl sorait úgy, hogy a 40 karakternél hosszabb sorokat ne teljes hosszukban, hanem csak az első 40 karakterig írd ki, és annak jelzésére, hogy a sor ennél hosszabb, a végére írj három pontot! Minden sor elején jelenjen meg, hogy mekkora annak teljes hossza!
- Jelenítsd meg a 10-nél kisebb pozitív egész számokat és négyzeteiket!
- Jelenítsd meg az /etc/passwd fájl sorait úgy, hogy a mezőket visszafelé íratod ki! Azaz az első mező utolsóként, a második utolsó előttiként, az utolsó pedig elsőként jelenjen meg!
- Jelenítsd meg az /etc/passwd fájlt úgy, hogy minden sort visszafelé íratsz ki!
- Írasd ki az /etc/passwd fájt sorait visszafelé, azaz a legutolsó sor jelenjen meg elsőként, az első pedig utolsóként!
- Készíts a /tmp/szolista.txt fájl szavairól előfordulási gyakoriságukat tartalmazó listát! A lista legyen rendezett, elöl a legtöbbet előforduló szó szerepeljen! Példa a kimenetre:
- 292 the
- 166 a
- 156 of
- Készíts gyakorisági listát a /etc/passwd fájlban található shellekről, melyik hányszor fordul elő?