awk常用的几条命令组合

前言

最近在生产上查问题,也是练就了一下awk的命令。
生产上的数据安全性要求比较高,一般要拿到测试环境都需要脱敏,但是脱敏的数据会有很多程序上的不适应。
所以有时候查询问题,查询一条消费记录,可能是要在上百万的数据中找到,并分析异常原因。awk、grep 都是经常用到的,基本上有时候还要在命令行写shell代码,熟能生巧,多敲几遍,也是能很快速熟练掌握的。
其实建议大家学习的是一种思路,而不是死记命令,年纪大了,也记不住那么多命令了,/捂脸

测试文件test.txt

a|b|c|d|1|sdsds
a|b|c|d|2|sdsds
s|b|c|d|3|sdsds
d|b|c|d|43|sdsds
c|b|c|d|1|sdsds
a|b|c|d|2|sdsds
d|b|c|d|5|sdsds

awk查看一条记录

#$0 是代表一整行的记录 $1代表以空格界的第一行信息,这样看到的是全部的记录
awk '{print $0}' test.txt
awk '{print $1}' test.txt

如果不太理解的话,可以试试test.txt换成下面案例

a|b|c|d|1|sdsds iisddwe  wew
a|b|c|d|2|sdsds i sddsd
s|b|c|d|3|sdsds  sdsd
d|b|c|d|43|sdsds
c|b|c|d|1|sdsds
a|b|c|d|2|sdsds
d|b|c|d|5|sdsds

awk以分隔符查找数据

#以"|"分割数据,输出1,2,3,4行数据
awk -F"|" '{print $1,$2,$3,$4}' test.txt

awk以分隔符拆分数据, 求特定列数据计算

#求第5列的数据之和
awk -F"|" 'BEGIN{SUM=0}{SUM=SUM+$5} END {print SUM}' test.txt

awk以分隔符拆分数据,求特定列数据计算,添加if条件判断

#根据不同条件获取不同条件的和
awk -F"|" 'BEGIN{aSUM=0;bSUM=0;cSUM=0}{if( $1 == "a") aSUM=aSUM+$5;else if( $1 == "b") bSUM=bSUM+$5;else cSUM=cSUM+$5} END{print aSUM,bSUM,cSUM}' test.txt

如果有两三个文件需要一起求和,那么我们可以在上面的语句中添加 文件即可

awk -F"|" 'BEGIN{aSUM=0;bSUM=0;cSUM=0}{if( $1 == "a") aSUM=aSUM+$5;else if( $1 == "b") bSUM=bSUM+$5;else cSUM=cSUM+$5} END{print aSUM,bSUM,cSUM}' test.txt test1.txt test2.txt

awk处理两个文件中相同部分内容, 此内容可以是相同的一行,也有可能是拼接出来的一个key值,两文件比较输出结果文件

待续…

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mingjie1212

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值