awk 初尝

awk是一个强大的linux 自带工具 用于分析文件 日志,由java转awk 还是有点困难的 下边我们一点一点尝试

假如有一个文件 test 是这样子的 我想要去里边8月7号的null 要怎么操作呢

20170809|demo0754|%22%3anull|^test

20170807|demo0754|%22%3anull|^test

20170807|demo0754|%22%3anull|^test

首先 取得0807这一样 awk /0807/ test 就可以了


取null 要进行两步切分

 第一步 awk -F '\%22\%3' '{print $2}' test 意思是 把$22%3a作为分隔符 对正行进行切分 获得两个部分,只取第二部分所以用 $2(特殊符号必须转义\)

第二部 对$2按照|^进行切分取第一步 awk  -F ‘\|\^’ '{print $1}'

然后把三个awk 串起来

awk /0807/ test  |  awk -F '\%22\%3' '{print $2}' |  awk  -F ‘\|\^’ '{print $1}' 所得的结果就是null


接下来进行一个新的需求 要统计null的个数

那么就要用到sort 和uniq 和wc 了

上边的方法改写成

awk /0807/ test  |  awk -F '\%22\%3' '{print $2}' |  awk  -F ‘\|\^’ '{print $1}'  | sort -r | uniq -c | wc -l

为什么要排序呢?那是因为如果不排序 就会去重得不彻底 同样的字段 linux会认为是不同的 解决方法就是加上sort

uniq是唯一的意思 这里用作去重

wc 是统计行数的意思


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值