本文共 1553 字,大约阅读时间需要 5 分钟。
awk数据过滤,统计(行,列):
逐行处理器awk内植变量
$1,$2,$3..... 第n列NF 当前行有多少列NR 当前行号awk打印常量(“常量必须要使用引号”打印多个以逗号隔开)格式:
Awk 选项 ‘BEGIN{} 条件{} END{}‘ 文件原则所有的指令必须放在 {}中
BEGIN{} 指令在读取内容前执行1次
条件{} 指令在读取文件中执行n次
END{} 指令在读取文件后执行1次
简式(3个指令必须有一个)
1:awk 选项 ‘条件{指令}’ 文件2:命令 | awk 选项 ‘条件{指令}’默认指令为打印默认条件匹配所有print打印 ($1<打印第一列>$2........)选项:
-F 指定分割符<默认是空格或tab键>条件:
1:/正则/ (模糊匹配)2:数字和字符的比较 (精确匹配)3:支持逻辑&&且 ||或4:运算(当计算器运算)(加减乘除不定义数值默认为0)5:支持分支结构循环结构
(if指令)if (){}if (){}else{}if(){}else if (){}..例:/etc/passwd下有多少普通用户有多少系统用户进行统计
awk -F: '{if ($3>=1000){x++}else{y++}} END{print " 普通用户:"x, "系统用户:"y}' /etc/passwdwhile(){}循环:
词频root hehe rootxixi rootni hao ma rootawk '{i=1;while(i<=NF){if($i=="root"){x++};i++}} END{print x}' /a.txtfor (){}
tailf /var/log/httpd/access_log
ab -c 100 -n 10000 (模拟100人访问该IP10000次)统计:
awk '{ip[$1]++} END{for (i in ip){print i,ip[i]}}' /var/log/httpd/access_logawk '{ip[$1]++} END{}' /access_log
a=(11 22 33 44 55 66 77 88 99 00)
a[‘abc’]=11a[‘tt’]=22a[‘hh’]=33...... (shuchu abc=11)awk ‘$1~/root/{ }’ ...对第一列作模糊匹配查找例:awk -F: ‘{print $1}’ /etc/passwd
awd ‘{print “nh” ,”nm”}’ /etc/passwdawk '/^K/{print "nh", "nm"}' /data.txt/data.txtawk -F: '{print "用户是:",$1}' /etc/passwdawk 'BEGIN{print "nihao"}' /data.txt/data.txt
awk '{print "nihao"}' /data.txt/data.txtawk 'END{print "nihao"}' /data.txt/data.txtawk -F: 'BEGIN{print "用户名 UID 解释器"} $1~/^root/{print$1,"\t"$4,"\t"$7 } END{print"总用户量:"NR}' / etc/passwd
Awk -F: ‘$1~/root/{print $3}’ /etc/passwd
awk 'BEGIN{x=3;y=4;print x+y}'
转载于:https://blog.51cto.com/13404755/2050757