引子
zcat hnmuseum_21070701.gz|awk -F'[: ]' '{size[$3":"$4]+=$11} END{for(time in size){print time,size[time]*1.1/1024/1024}}'|sort
@H_502_6@
命令组成分三个部分:BEGIN、BODY、END
- BEGIN和END需要关键字进行声明,而且是命令中的可选部分,其在命令执行时之后执行一次
- BODY部分不需要关键字声明,但是在命令执行时BODY部分会根据输入的行数而执行多次
awk 'BEGIN{printf "序号 名称 吉祥物 数值 \n"} {print} END{print "下一页"}' language.txt
@H_502_6@
常见操作
awk -F ' ' '{print $2}' language.txt
@H_502_6@
awk -F ' ' '{sum += $4}END{print sum}' language.txt
@H_502_6@
200 /api/get_info 127.0.0.1 20
300 /api/get_info 127.0.0.1 20
400 /api/get_user 127.0.0.1 20
500 /api/get_info 127.0.0.1 30
200 /api/get_info 127.0.0.1 20
200 /api/get_user 127.0.0.1 10
200 /api/get_info 127.0.0.1 20
200 /api/get_user 127.0.0.1 50
300 /api/get_info 127.0.0.1 20
200 /api/get_user 127.0.0.1 60
400 /api/get_user 127.0.0.1 20
200 /api/get_info 127.0.0.1 20
500 /api/get_info 127.0.0.1 70
200 /api/get_info 127.0.0.1 20
200 /api/get_list 127.0.0.1 50
300 /api/get_info 127.0.0.1 20
200 /api/get_list 127.0.0.1 20
400 /api/get_list 127.0.0.1 40
500 /api/get_info 127.0.0.1 20
200 /api/get_info 127.0.0.1 30
@H_502_6@
awk '{arr[$1] ++}END{for(item in arr) print item ":" arr[item]}' data.txt
@H_502_6@
注意事项
sub 查找替换
awk '{sub("hello","sub");print $0}' str.txt
@H_502_6@
next 类似于continue
awk '{if($1 == "200") next;print $0}' data.txt
@H_502_6@
function find_min(num1, num2)
{
if (num1 < num2)
return num1
return num2
}
function find_max(num1, num2)
{
if (num1 > num2)
return num1
return num2
}
function main(num1, num2)
{
# Find minimum number
result = find_min(10, 20)
print "Minimum =", result
# Find maximum number
result = find_max(10, 20)
print "Maximum =", result
}
BEGIN {
main(10, 20)
}
@H_502_6@
cat language.txt |PHP -r '$fh=fopen("PHP://stdin","r");while(!feof($fh)){$text=fgets($fh);$arr=explode(" ",$text);echo $arr[2]."\n";}fclose($fh);'
@H_502_6@
cat language.txt |awk '{print $3}'
@H_502_6@