Awk példák


Szöveges állomány kinyomtatása a képernyőre soronként

awk '{print}' /usr/share/dict/words


Egy példa a rekord orientáltság megértésére

$ awk -F : '{print $3}' /etc/passwd

-v kapcsoló változó érték összerendelés
$ awk -v letter=E 'BEGIN{printf "Name = %s\n", letter}'


0 és 1 közötti random számok generálása

$ awk -v seed=$RANDOM 'BEGIN{srand(seed);}{print rand()}'

Egy fájl előállítása szekvenciáával és random értékekkel
$ for i in {A..Z}; do awk -v letter=$i -v seed=$RANDOM 'BEGIN{srand(seed);print letter " " rand()*10}'; done > file.txt
$ head file.txt

A  2.00514
B  0.389145
C  8.82008
D  8.82008
E  5.345101

Meg tudjuk azt csinálni, hogy az első oszlopban az /usr/share/dict/words fájlból kivett szavak kerüljenek?
1) véletlen sorrendben, minden szó
2) minden betűre egy szó
3) abc szerint sorra, minden betűből 1
véletlen szó

By default, AWK prints all the lines that match pattern
$ awk '/G/ {print $0}' file.txt

Átlag számítás awk-kal (a fenti fájlból)
$ awk 'BEGIN {sum=0; count=0; OFS="\t"} {sum+=$2; count++} END {print "Average:", sum/count}' file.txt

Average:    5.00861


Fájlművelet előkészítése awk-kal. Minden pdf fájl áthelyezése egy könyvtárral feljebb
$ ls *.pdf | egrep -o [0-9]+ | awk '{printf("mv M%03d.pdf ../M%03d.pdf\n",$1, $1+1)}' | bash

5 véletlen fájl kiválasztása awk-kal
$ ls | awk '{print rand() " " $0}' | sort | awk '{print $2}' |head -n 5
Miért nem jó ez a prancs, hogyan lehet kijavítani?




További jó példák itt:
https://www.tutorialspoint.com/awk/awk_basic_examples.htm
https://riptutorial.com/awk
最終更新日時: 2021年 11月 14日(Sunday) 21:14