awk简介
awk是一个非常强大的命令 ,grep,awk,sed linux系统的三剑客。
知识点
awk的模式:1正则表达式作为模式 2比较表达式作为模式 3范围模式 4特殊模式BEGIN和END。
awk的基本格式 (awk 【参数】 ‘条件’ 路径)
例 awk ‘{print $5}’ xxxxx 输出xxxxx文件的第五列
例 awk ‘$9 ~ /^200$/’ xxxxx 输出xxxxx文件第九列以200开头以200结尾的行 解释 $9模式第九列 ~正则匹配操作符
例 awk ‘NR>=10$$NR<=20’ 文件 取出该文件大于等于10小于等于20的行
例 awk ‘NR==5,NR==10{print NR,$0}’ 文件名 解释条件是从第5行到第10行 动作是显示行号NR 和整行$0
awk -F “指定的分割符号”
awk -F “ :” ‘$5==“root”’ 文件名 找出该文件第五列是root的行 指定:为分隔符
awk -F “ :” ‘$5~“^root$”’ 文件名 找出文件中第五列以root开头结尾的行
awk特殊模式BEGIN模式与END模式
awk使用内置变量RS来存放输入记录分隔符,RS表示的是输入的记录分割符,这个值可以通过BEGIN模块重新定义修改
awk ‘BEGIN{RS=“/”}{print NR,$0}’ 文件
awk -F “分隔符” ‘BEGIN{模式}{动作}END’ 文件
开始模块 用来告诉awk数据要如何读
结束模块 用来告诉awk要如何结束
. awk -F "[/]+" '{h[$2]++}END{for(i in h)print i,h[i]}' file
. 我们最终需要输出的是去重复以后的统计结果,所以得在END模块里进行输出
. for(i in h)遍历这个数组,i里存的都是房间号
print i,h[i]:输出每一个房间号及其房间里的内容(计数结果)