博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell脚本编辑6:awk过滤
阅读量:6766 次
发布时间:2019-06-26

本文共 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/passwd

while(){}循环:

词频
root hehe root
xixi root
ni hao ma root
awk '{i=1;while(i<=NF){if($i=="root"){x++};i++}} END{print x}' /a.txt

for (){}

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_log

awk '{ip[$1]++} END{}' /access_log

a=(11 22 33 44 55 66 77 88 99 00)

a[‘abc’]=11
a[‘tt’]=22
a[‘hh’]=33
...... (shuchu abc=11)
awk ‘$1~/root/{ }’ ...对第一列作模糊匹配查找

例:awk -F: ‘{print $1}’ /etc/passwd

awd ‘{print “nh” ,”nm”}’ /etc/passwd
awk '/^K/{print "nh", "nm"}' /data.txt/data.txt
awk -F: '{print "用户是:",$1}' /etc/passwd

awk 'BEGIN{print "nihao"}' /data.txt/data.txt

awk '{print "nihao"}' /data.txt/data.txt
awk 'END{print "nihao"}' /data.txt/data.txt

awk -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

你可能感兴趣的文章