Advertisement
Xetos

awk 3

Apr 25th, 2016
587
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Awk 7.84 KB | None | 0 0
  1. Név;EHA;Nem;Programozás alapjai;Számítógépes architektúrák;Kalkulus;Diszkrét matematika I.;Számítógépes hálózatok;Programozás 1
  2. Balázs Eszter;BAEVAAT.SZE;lány;5;1;2;5;4;5
  3. Horváth Éva;HOEUAAT.SZE;lány;2;2;3;4;4;4
  4. Kiss János;KIJWAAT.SZE;fiú;1;1;1;2;2;3
  5. Kovács Bernadett;KOBVAAT.SZE;lány;5;1;3;5;5;5
  6. Kovács István;KOIWAAT.SZE;fiú;4;3;5;5;3;4
  7. Kovács Péter;KOPUAAT.SZE;fiú;4;4;4;4;2;3
  8. Lipták Atilla;LIAUAAT.SZE;fiú;3;1;5;2;4;4
  9. Mek Elek;MEEVAAT.SZE;fiú;3;2;2;3;3;4
  10. Mészáros Ildikó;MEIVAAT.SZE;lány;4;2;1;4;4;5
  11. Nagy Andrea;NAAWAAT.SZE;lány;5;1;4;4;4;5
  12. Novák Zsuzsanna;NOZUAAT.SZE;lány;1;1;2;4;3;4
  13. Seres Ilona;SEIWAAT.SZE;lány;5;1;1;4;4;5
  14. Szabó Gabriella;SZGVAAT.SZE;lány;3;2;5;4;3;4
  15. Tóth János;TOJWAAT.SZE;fiú;1;1;2;4;3;4
  16.  
  17.  
  18. ////////////////////////////////////////////////////////////////////////////////////////////////
  19.  
  20. #! /usr/bin/awk -f
  21. # Kiírja mindenk hallgató nevét és átlagát.
  22.  
  23. BEGIN {
  24.   FS=";"
  25. }
  26. NR >= 2 {
  27.   sum=0
  28.   for (i=4; i<=9; i++) {
  29.     sum+=$i
  30.   }
  31.   print $1, sum/6
  32. }
  33.  
  34.  
  35. //////////////////////////////////////////////////////////////////////////////////////////////////
  36.  
  37. #! /usr/bin/awk -f
  38. # Nemenként kiírja az átlagot.
  39.  
  40. BEGIN {
  41.   FS=";"
  42. }
  43. NR >= 2 {
  44.   for (i=4; i<=9; i++) {
  45.     sum[$3]+=$i
  46.     count[$3]++
  47.   }
  48. }
  49. END {
  50.   print "Lányok átlaga:", sum["lány"]/count["lány"]
  51.   print "Fiúk átlaga:", sum["fiú"]/count["fiú"]
  52. }
  53.  
  54.  
  55. //////////////////////////////////////////////////////////////////////////////////////////////////
  56.  
  57. #! /usr/bin/awk -f
  58. # Kiírja az összes hallgatóra számolt átlagot.
  59.  
  60. BEGIN {
  61.   FS=";"
  62. }
  63. NR >= 2 {
  64.   for (i=4; i<=9; i++) {
  65.     sum+=$i
  66.     count++
  67.   }
  68. }
  69. END {
  70.   print "Átlag:", sum/count
  71. }
  72.  
  73.  
  74. //////////////////////////////////////////////////////////////////////////////////////////////////
  75.  
  76. #! /usr/bin/awk -f
  77. # Minden második sor kiíratása.
  78.  
  79. NR % 2 == 0 {print $0}
  80.  
  81. //////////////////////////////////////////////////////////////////////////////////////////////////
  82. GD09-W3C;50;51
  83. RH11-DH5;90;88
  84. AN77-4FG;110;142
  85. ABC-911;50;62
  86. ASD-123;130;126
  87. KN12-WER;50;54
  88. 123-4RF-ERF;50;47
  89. GD98-ASD;90;102
  90. GD14-LKZ;90;95
  91. RH88-DH4;130;115
  92. GD09-W3C;50;61
  93. 123-4RF-ERF;110;115
  94. GD14-LKZ;90;87
  95. GD09-W3C;50;57
  96. AN77-4FG;50;52
  97. ABC-911;90;99
  98. ASD-123;90;123
  99. GD09-W3C;50;57
  100. ABC-911;130;132
  101. RH11-DH5;50;49
  102. GD09-W3C;110;111
  103. ASD-123;90;100
  104.  
  105.  
  106.  
  107. #! /usr/bin/awk -f
  108. Név;EHA;Nem;Programozás alapjai;Számítógépes architektúrák;Kalkulus;Diszkrét matematika I.;Számítógépes hálózatok;Programozás 1
  109. Balázs Eszter;BAEVAAT.SZE;lány;5;1;2;5;4;5
  110. Horváth Éva;HOEUAAT.SZE;lány;2;2;3;4;4;4
  111. Kiss János;KIJWAAT.SZE;fiú;1;1;1;2;2;3
  112. Kovács Bernadett;KOBVAAT.SZE;lány;5;1;3;5;5;5
  113. Kovács István;KOIWAAT.SZE;fiú;4;3;5;5;3;4
  114. Kovács Péter;KOPUAAT.SZE;fiú;4;4;4;4;2;3
  115. Lipták Atilla;LIAUAAT.SZE;fiú;3;1;5;2;4;4
  116. Mek Elek;MEEVAAT.SZE;fiú;3;2;2;3;3;4
  117. Mészáros Ildikó;MEIVAAT.SZE;lány;4;2;1;4;4;5
  118. Nagy Andrea;NAAWAAT.SZE;lány;5;1;4;4;4;5
  119. Novák Zsuzsanna;NOZUAAT.SZE;lány;1;1;2;4;3;4
  120. Seres Ilona;SEIWAAT.SZE;lány;5;1;1;4;4;5
  121. Szabó Gabriella;SZGVAAT.SZE;lány;3;2;5;4;3;4
  122. Tóth János;TOJWAAT.SZE;fiú;1;1;2;4;3;4
  123.  
  124.  
  125.  
  126. # Fiktíviában a rendszámok az alábbi formátumra épülnek:
  127. #  - 2 db nagybetű, ami a tartományt jelző,
  128. #  - 2 db szám, ami a készítés évszámának utolsó két karaktere,
  129. #  - ezeket követi egy kötőjel,
  130. #  - 3 jegyű véletlen sorozat, amely tartalmazhat számokat és nagybetűket is.
  131. # Példa: GD09-W3C, mely egy 2009-es gondori autót azonosít.
  132. # A traffipax.csv fájl <rendszám>;<határ>;<mért érték> formában tartalmaz traffipax méréseket.
  133. # Büntetést abban az esetben küldenek ki, ha a megadott sebességhatárt legalább 10%-al túllépte az adott autó, kik kapnak büntetést, és hányat?
  134. # Melyik autóval szabálytalankodtak a legtöbbször?
  135.  
  136. BEGIN {
  137.   FS=";"
  138. }
  139.  
  140. $2 * 1.1 < $3{
  141.   fine[$1]++
  142. }
  143.  
  144. END {
  145.   for (ind in fine) {
  146.     print ind, ":", fine[ind]
  147.     if (fine[ind] > max_fine) {
  148.       max_fine = fine[ind]  
  149.       max_fine_ind = ind
  150.     }
  151.   }
  152.  
  153.   print "A legtöbb büntetést a", max_fine_ind, "rendszámú autó kapta,", max_fine, "büntetést"
  154. }
  155.  
  156. //////////////////////////////////////////////////////////////////////////////////////////////////
  157.  
  158. #! /usr/bin/awk -f
  159. # Bemenetként használja az osztalyzatok.csv fájl.
  160. # A program kiírja a hallgatók évfolyamonkénti átlagát.
  161.  
  162. BEGIN {
  163.   FS=";"
  164. }
  165.  
  166. NR >= 2 {
  167.   # Az évfolyamot jelző betű kivágása az EHA kódból
  168.   year = substr($2, 4, 1)
  169.  
  170.   for (i=4; i<=9; i++) {
  171.     sum[year] += $i
  172.     count[year]++
  173.   }
  174. }
  175.  
  176. END {
  177.   for (ind in sum) {
  178.     avg = sum[ind]/count[ind]
  179.     year = ind
  180.    
  181.     if (ind == "W") {
  182.       year = 1
  183.     } else if (ind == "V") {
  184.       year = 2
  185.     } else if (ind == "U") {
  186.       year = 3
  187.     }
  188.     print year, "evfolyam atlaga", avg
  189.   }
  190. }
  191.  
  192. //////////////////////////////////////////////////////////////////////////////////////////////////
  193. GD09-W3C;50;51
  194. RH11-DH5;90;88
  195. AN77-4FG;110;142
  196. ABC-911;50;62
  197. ASD-123;130;126
  198. KN12-WER;50;54
  199. 123-4RF-ERF;50;47
  200. GD98-ASD;90;102
  201. GD14-LKZ;90;95
  202. RH88-DH4;130;115
  203. GD09-W3C;50;61
  204. 123-4RF-ERF;110;115
  205. GD14-LKZ;90;87
  206. GD09-W3C;50;57
  207. AN77-4FG;50;52
  208. ABC-911;90;99
  209. ASD-123;90;123
  210. GD09-W3C;50;57
  211. ABC-911;130;132
  212. RH11-DH5;50;49
  213. GD09-W3C;110;111
  214. ASD-123;90;100
  215.  
  216.  
  217.  
  218. #! /usr/bin/awk -f
  219.  
  220. # Fiktíviában a rendszámok az alábbi formátumra épülnek:
  221. #  - 2 db nagybetű, ami a tartományt jelző,
  222. #  - 2 db szám, ami a készítés évszámának utolsó két karaktere,
  223. #  - ezeket követi egy kötőjel,
  224. #  - 3 jegyű véletlen sorozat, amely tartalmazhat számokat és nagybetűket is.
  225. # Példa: GD09-W3C, mely egy 2009-es gondori autót azonosít.
  226. # A traffipax.csv fájl <rendszám>;<határ>;<mért érték> formában tartalmaz traffipax méréseket.
  227. # Határozza meg hányszor mértek külföldi autót (a rendszám formailag nem felel meg az ország rendszám szabályainak)?
  228.  
  229. ## Az Ubuntu alatt alapértelmezettként fent lévő mawk eltérően kezeli a reguláris kifejezéseket, gyakorláshoz ajánlott a gawk telepítése.
  230. ## Ez a "sudo apt-get install gawk" paranccsal tehető meg, ezekután az egyetemen is használt gawk lesz az alapértelmezett.
  231.  
  232. BEGIN {
  233.   FS=";"
  234. }
  235.  
  236. $1 !~ /^[A-Z]{2}[0-9]{2}-[0-9A-Z]{3}$/ {
  237.   foreign_num++
  238. }
  239.  
  240. END {
  241.   print foreign_num, "alkalommal mértek külföldi autót"
  242. }
  243.  
  244. //////////////////////////////////////////////////////////////////////////////////////////////////
  245. Balázs Eszter;1988;PC-bolt;20000;Vegyesbolt;2300;Tecsó;5200;PC-bolt;300;Tecsó;2200
  246. Horváth Éva;1965;Vegyesbolt;2300;Vegyesbolt;2700;Vegyesbolt;1700
  247. Kiss János;1994;PC-bolt;23000;Tecsó;2900;Tecsó;1300;Tecsó;1100
  248. Kovács Bernadett;1997;PC-bolt;1700;PC-bolt;12000
  249. Kovács István;1977;Vegyesbolt;6000;Vegyesbolt;1200;Vegyesbolt;1500
  250. Kovács Péter;1992;PC-bolt;10000;PC-bolt;10000
  251. Lipták Atilla;1976;Vegyesbolt;1200;Tecsó;7200;Vegyesbolt;1500
  252.  
  253.  
  254.  
  255. #! /usr/bin/awk -f
  256.  
  257. # A vasarlas.csv személyek bankkártyás vásárlásait tartalmazza.
  258. # Az első oszlopban az egyes személyek nevei találhatók, a másodikban a születési évük, a további oszlopokban pedig vásárlások találhatók. Egy vásárlás leírásához két oszlopra van szükség, az elsőben a bolt van megadva, ahol vásároltak, a másodikban pedig az összeg, amennyit vásároltak.
  259. # Minden személynek tetszőleges mennyiségű vásárlása lehet.
  260. # Ki milyen összegben vásárolt?
  261.  
  262. BEGIN {
  263.   FS=";"
  264. }
  265.  
  266. {
  267.   sum=0
  268.   for (i=3; i<=NF; i+=2) {
  269.     sum+=$(i+1)    
  270.   }
  271.   print $1, sum
  272. }
  273.  
  274. //////////////////////////////////////////////////////////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement