Awk的使用
1 awk的基础知识
awk是文本与数据的处理工具
awk的特点是可以编程,并且处理灵活,功能更强大
awk的应用:统计和制表等等
2 awk的处理方式和格式
awk一次处理一行内容
awk对每行可以切片处理
3 awk的格式有
命令行格式
脚本格式
4 命令行格式有
基本格式
扩展格式
5 基本格式
awk
参数
命令
操作的文件
6 命令由两部分组成
正则表达式或逻辑判断式
awk操作命令
7 awk操作命令语句
内置函数
控制指令
8 awk的内置参数
内置参数的使用格式(awk -F ’:指定的分割符’ ’{print 内置参数}’ 文件名)awk的内置变量1: $0表示整个当前行 $1每行第一个字段 $2每行第二个字段,awk内置参数的分割符 参数:-F ’指定的分割符’ 如果没有写将默认为空格,如果想要多个字段加逗号
9 awk的内置变量2
NR每行的行号 NF字段数量的总数或每行的列数 FILENAME正在处理的文件名
案例一: 显示文件中的每行的行号,每行的列数和对应行的用户名
第一种 用print awk -F ’:’ ’{print ”Line行号: ”NR, ”Col列数:”NF”,”User用户名: ”$1}’ 文件名
第二种 用printf awk -F ’:’ ’{printf (”Line:%s Col:%s User:%s\n”,NR,
NF,$1)}’ 文件名 (s前面加上字符数,显示的时候格式会更整齐)
案例二: 显示文件中用户ID大于100的行号和用户名
awk -F ’:’ ’{if条件判断 ($3>100) pint ”Line:”NR, ”User: ”$1}’ 文件名
案例三: 在服务器log中找出Error的发生日期
第一种: sed ’/Error/p’ fresh.log | awk ’{print $1}’用sed找出有Error的行
第二种: awk ’/Error/{print $1}’ fresh.log 用awk定位Error
10 逻辑判断式
~,!~匹配正则表达式 匹配 不匹配
awk -F ’:’ ’要打印的东西如$1逻辑判断式如~/匹配的条件如^m.*/{print $1}’ 文件名 打印出文件中所有以m开头的第一个字段
= =,!=,< ,>判断逻辑表达式 等于 不等于 小于 大于
awk -F ’:’ ’输出的条件如$3>100 {print $!,$3}’ 文件名
打印出文件中所有小于100的第一个字段和第三个字段
11 扩展格式
在基本格式之前加入BEGIN,在基本格式之后加入END
案例一: 制表显示/etc/passwd每行的行号,每行的列数,对应行的用户名
awk -F ’:’ 开头部分’BEIND{print “LINE行号 COL列数 USER用户名}’
循环部分要打印的字段{print NR每行的行号,NE每行的列数,$1每行的第一个字段}结尾部分END{print”------”FITENAME”------”}’ 文件名
12 awk的逻辑处理案例
案例一: 统计当前文件夹下的文件和文件夹占用的大小
ls -l | awk ’BEGIN (size=0)}{size+=$5}END{print “ size is ” size/1024/1024”M” }’
案例二: 统计显示/etc/passwd/的账户总人数
awk -F ’:’ ‘BEGIN{count=0}$1!~/^$/{count++}END{print “count= ”count}’ 文件名
统计显示UID大于100的用户名
Awk -F ‘:’ ‘BEGIN{count=0}{if ($3 > 100) name[count++]=$1}END{for
(i=0;i<count;i++) print i,name[i]}’ passwd
案例三: 统计netstat-anp状态下为LISTEN和CONNECTED的连接数量
Netstat -anp | awk ‘$6~/CONNECTED|LISTEN/{sum[$6]++}END{for (i in sum)print i,sum[i]}’
13 sed和awk的区别
sed侧重于正则处理
sed和awk可以共同使用
awk和sed都可以处理文本
awk侧重于复杂的逻辑处理
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。