linux awk命令介绍

通常来说 我们使用grep即可满足我们大多数的需求了,但是还是有一些情况,grep是解决不了问题的,如我们的日志中有服务的响应时间,想过滤出响应时间超过200ms掉日志,这时候用grep就很难做到了。所以,很多时候我们还会使用到awk命令,awk命令是一个功能十分强大的命令,学会awk命令对我们解决问题有很大帮助。说到这里可能有人会想到sed命令,sed命令常常作用于一整行的处理,awk则比较倾向于将一行分成数个字段来处理,目前我遇到的情况还是awk使用的频率要高很多。

一.语法:awk '条件类型1 {动作1} 条件类型2 {动作2}...' filename

awk后面接两个单引号并加上大括号{}来设置想要对数据进行的处理动作。awk可以处理后续接的文件,也可以读取来自前个命令的输入。awk主要是处理每一行的字段内的数据,而默认的字段的分隔符为空格键或[tab]键。

二.使用介绍

举例:9#7#0#0#0#0#127.0.0.1#KBIH8I09CJK09BN89HILIBHKKXZV8OU##-1#null#4.9#null#null#0befb78b1527676906653这里我想取出文件名为test.log中的ip 127.0.0.1的话 可以使用awk -F '#' '{print $7}' test.log 这里的 -F ‘#’表示将这个字符串按照#分隔 如果不使用-F 则使用默认空格符分隔 分隔后打印第7条 这里如果是$0表示整行 所以具体分隔内容是从1开始,如果我们想取出第二个数字 这里是7 大于200的情况 可以使用awk -F '#' '{(if($2==7) {print $0})}',这样如果日志中存在第二个数字等于7的时候 就打印整行日志

三.awk的处理流程是 
1.读入第一行,并将第一行的数据填入$0,$1,$2等变量中
2.依据条件类型的限制,判断是否需要进行后面的动作
3.做完所有的动作与条件类型
4.若还有后续的"行"的数据,则重复1-3步骤,直到所有数据都处理完
四.awk中的内置变量
NF 每一行拥有的字段综述
NR 目前awk处理的是第几行数据
FS 目前的分隔字符 默认是空格键
五.awk的逻辑运算符
逻辑运算符主要包括 > < >= <= == != 很好理解,不做说明了 主要是==需要注意下
六.注意事项
1.所有awk的动作,即在{}内的动作,如果有需要多个命令辅助时,可利用';'间隔,或者直接以回车键隔开每个命令
2.逻辑运算中,等号需要使用==两个等号
3.格式化输出时,在printf的格式设置当中,务必加上\n,才能进行分行
4.与bash,shell的变量不同,awk中的变量可以直接使用,不需要加$符号

除此之外,awk还支持循环计算,感兴趣的可以学习下。

参考:鸟哥的私房菜

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值