awk

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模块里进行输出

. fori in h)遍历这个数组,i里存的都是房间号

print ih[i]:输出每一个房间号及其房间里的内容(计数结果)

原文地址:https://www.cnblogs.com/zhutianye11/p/9883331.html