first, previous, next, last section, table of contents.


Hasznos egysoros programok

Sok hasznos awk program rövid, csak egy vagy két sorból áll. Az alábbiakban bemutatunk néhányat. Néhány program olyan programozási megoldásokat is tartalmaz, amelyeket eddig nem tárgyaltunk, de a programhoz fűzött magyarázatokkal talán érthető lesz, hogy mi is történik.

A legtöbb példa egy `data' nevű adat file-t használ, ami csak a file helyét jelöli; ha használni akarod a programokat, akkor a saját file-od nevét kell a `data' helyére írni.

awk '{ if (length($0) > max) max = length($0) }
END { print max }' data
A program kinyomtatja a leghosszabb sor hosszát a file-ban.
awk 'length($0) > 80' data
A program kinyomtat minden olyan sort, ami hosszabb mint 80 karakter. Az egyetlen szabályban egy feltétel szolgál mintaként, és nincs tevékenység megadva (az alaptevékenységet (nyomtasd ki a sort) használjuk).
expand data | awk '{ if (x < length()) x = length() }
END { print "maximum line length is " x }'
A program kinyomtatja a `data' file-ban szereplő leghosszabb sor hosszát. A bemenetet az expand parancs dolgozza fel először; lecseréli a tab karaktereket azonos számú szóközre, így amikor a sor hosszát vizsgálja, lényegében a jobb oldali margó oszlopszámát veszi figyelembe.
awk 'NF > 0' data
A program kinyomtat minden olyan sort, amiben legalább egy mező szerepel. Ez egy egyszerű megoldás az üres sorok eltávolítására (lényegében egy olyan, az eredetihez hasonló file-t hozunk létre, amiből az üres sorok hiányoznak).
awk 'BEGIN { for (i = 1; i <= 7; i++)
print int(101 * rand()) }'
A program hét darab zérus és 100 közé eső véletlen számot generál.
ls -lg files | awk '{ x += $5 } ; END { print "total bytes: " x }'
A program a files összesített méretét adja meg byte-ban.
ls -lg files | awk '{ x += $5 }
END { print "total K-bytes: " (x + 1023)/1024 }'
A program a files összesített méretét adja meg kilobyte-ban.
awk -F: '{ print $1 }' /etc/passwd | sort
A program az összes felhasználó belépési nevének rendezett listáját adja vissza.
awk 'END { print NR }' data
A program a sorok számát adja meg a file-ban.
awk 'NR % 2 == 0' data
A program a `data' file páros számú sorait írja ki. Ha az `NR % 2 == 1' kifejezést használod, akkor a páratlan számú sorokat kapod meg.


Go to the first, previous, next, last section, table of contents.