rilpoint_mw113

Linux:Sed és awk

(Változatok közti eltérés)
(Új oldal, tartalma: „== Sed == * Készíts shell scripet, mely egy megadott fájl tartalmát úgy jeleníti meg, hogy az összes <code>this</code> szót cseréli a <code>that</code> szóra! <…”)
11. sor: 11. sor:
fi
fi
cat $FILE | sed 's/this/that/g'
cat $FILE | sed 's/this/that/g'
-
</code>
+
</code></megoldas>
-
</megoldas>
+
-
* 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!
+
* 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! <megoldas>
<code lang="bash">
<code lang="bash">
#!/bin/bash
#!/bin/bash
25. sor: 24. sor:
mv $FILE $FILE.bak
mv $FILE $FILE.bak
cat $FILE.bak | sed 's/this/that/g' >$FILE
cat $FILE.bak | sed 's/this/that/g' >$FILE
-
</code>
+
</code></megoldas>
== Awk ==
== 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 awk programot, mely a /etc/passwd fájlból kiírja a felhasználók bejelentkezési neveit! <megoldas>
<code lang="bash">
<code lang="bash">
#!/bin/bash
#!/bin/bash
cat /etc/passwd | awk -F: '{ print $1; }'
cat /etc/passwd | awk -F: '{ print $1; }'
-
</code>
+
</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!
* 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">
+
<code lang="bash"> <megoldas>
#!/bin/bash
#!/bin/bash
cat /etc/passwd | awk -F: '
cat /etc/passwd | awk -F: '
42. sor: 41. sor:
   printf ("3^3=%d\n",3^3) ;
   printf ("3^3=%d\n",3^3) ;
}'
}'
-
</code>
+
</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!
+
* Í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">
#!/bin/bash
#!/bin/bash
51. sor: 50. sor:
   printf("User ID: %+6.2f %d %o %X %s\n", $3, $3, $3, $3, $1);
   printf("User ID: %+6.2f %d %o %X %s\n", $3, $3, $3, $3, $1);
}'
}'
-
</code>
+
</code></megoldas>
-
* Írasd ki a /etc/passwd fájl tartalmát nagybetűssé alakítva! Az egyes sorok legyenek sorszámozva!
+
* Í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
61. sor: 60. sor:
   printf ("%d: %s\n", NR, toupper($0));
   printf ("%d: %s\n", NR, toupper($0));
}'
}'
-
</code>
+
</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ó.)
+
* 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">
#!/bin/bash
#!/bin/bash
77. sor: 76. sor:
   print ("Az atlag: " SUM/NR);
   print ("Az atlag: " SUM/NR);
}'
}'
-
</code>
+
</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!]
+
* Í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">
#!/bin/bash
#!/bin/bash
98. sor: 97. sor:
   printf ("A leghosszabb sor: %s\n", sor);
   printf ("A leghosszabb sor: %s\n", sor);
}'
}'
-
</code>
+
</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.)
+
* 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">
#!/bin/bash
#!/bin/bash
110. sor: 109. sor:
   if ($3==0) print ($0);
   if ($3==0) print ($0);
}'
}'
-
</code>
+
</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!!
+
* 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">
FILE=acer.txt
FILE=acer.txt
129. sor: 128. sor:
     printf ("%s\n",$0);
     printf ("%s\n",$0);
}'
}'
-
</code>
+
</code></megoldas>
-
* Jelenítsd meg a 10-nél kisebb pozitív egész számokat és négyzeteiket!
+
* Jelenítsd meg a 10-nél kisebb pozitív egész számokat és négyzeteiket! <megoldas>
<code lang="bash">
<code lang="bash">
#!/usr/bin/awk -f
#!/usr/bin/awk -f
139. sor: 138. sor:
   }
   }
}
}
-
</code>
+
</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!
+
* 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">
#!/bin/bash
#!/bin/bash
149. sor: 148. sor:
   printf ("\n")
   printf ("\n")
}'
}'
-
</code>
+
</code></megoldas>
-
* Jelenítsd ,eg az /etc/passwd fájlt úgy, hogy minden sort visszafelé íratsz ki!
+
* Jelenítsd ,eg az /etc/passwd fájlt úgy, hogy minden sort visszafelé íratsz ki! <megoldas>
<code lang="bash">
<code lang="bash">
cat a.txt | grep -v ^# | awk -F' ' '
cat a.txt | grep -v ^# | awk -F' ' '
168. sor: 167. sor:
   printf ( "%s\n", printRev($0) );
   printf ( "%s\n", printRev($0) );
}’
}’
-
</code>
+
</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!
+
* Í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">
#!/bin/bash
#!/bin/bash
179. sor: 178. sor:
   for(i=NR; i>0; i--) print line[i]  
   for(i=NR; i>0; i--) print line[i]  
}'
}'
-
</code>
+
</code></megoldas>
185. sor: 184. sor:
**292 the
**292 the
**166 a
**166 a
-
**156 of
+
**156 of <megoldas>
<code lang="bash">
<code lang="bash">
201. sor: 200. sor:
   for (i in szo) print (szo[i], i)
   for (i in szo) print (szo[i], i)
}' | sort -n -r | more
}' | sort -n -r | more
-
</code>
+
</code></megoldas>
-
* Készíts gyakorisági listát a /etc/passwd fájlban található shellekről, melyik hányszor fordul elő?
+
* 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">
#!/bin/bash
#!/bin/bash
214. sor: 213. sor:
}
}
' | sort -n -r
' | sort -n -r
-
</code>
+
</code></megoldas>

A lap 2010. április 25., 20:07-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!
<megoldas>
#!/bin/bash
cat /etc/passwd | awk -F: '
BEGIN {
  printf ("3^3=%d\n",3^3) ;
}'
</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!
  • Í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 ,eg 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ő?
Skin by RIL Partner