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

  • Post author:
  • Post category:linux

针对文件中的内容,取出指定的列(第八列、最后一列,以空格?分割)进行去重,并输出对应的行数
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


版权声明:本文为woomay原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。