好用的linux数据分析命令awk、grep

文章介绍了如何利用Linux的awk命令从日志文件中提取特定列(如第八列和最后一列),通过空格分隔,并进行内容去重,最终统计不重复行数的方法。涉及的关键技巧包括使用$NF获取最后一列,利用!a[$0]+进行去重,并结合wc-l计算行数。
摘要由CSDN通过智能技术生成

针对文件中的内容,取出指定的列(第八列、最后一列,以空格?分割)进行去重,并输出对应的行数
cat 2023-03-02.log | grep max_fc | awk ‘{print $8, $NF}’ | grep 游戏 | awk ‘!a[$0]++’ | wc -l

cat 2023-03-02.log | grep max_fc | awk ‘{print $8, $NF}’ | awk ‘!a[$0]++’ | wc -l

参考:
1、cat file | awk ‘{print $3, $NF}’ #打印第三列和最后一列

awk -F “:” ‘{print $1, $3}’ #以“:”为分隔符分割列,然后打印第一列和第三列
$0表示所有列
-F:指定分隔符
( N F ) 表示最后一列, (NF)表示最后一列, (NF)表示最后一列,(NF-1)表示倒数第二列,以此类推。
https://www.cnblogs.com/liuyihua1992/p/9689308.html
https://www.cnblogs.com/liuyihua1992/p/9689308.html

2、awk ‘!a[$0]++’ file 是个神奇的用法,通过它可以实现文件内容去重

$0: 代表整行
a[]: 代表数组a,名称随意,首次调用时为空
++: 与C/C++中的++一个含义,i++先使用i后i自增1,++i代表i先自增1然后被使用
!: 代表取反
所以a[$0]代表对当前行构建一个名为a的数组,首次构建后其值为0

a[$0]++代表先使用a[$0]的值,然后a[$0]的值自增1。首次调用自然就是0,下次遇到重复的行就变为1,所以不加!的情况下,该语法用于打印重复项,看下面的例子↓
https://www.litreily.top/2020/01/09/awk_dedup/
https://www.litreily.top/2020/01/09/awk_dedup/

3、未看
Linux命令去重统计排序(awk命令去重,sort, uniq命令去重统计)https://blog.csdn.net/feng973/article/details/73849586

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值