`
lhkzyz
  • 浏览: 347270 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

awk去重

阅读更多
本例循序渐进演示awk去重的各种功能
例如某1og 或txt下具有如下格式的文本(暂定文本名为test.log)

16:12:35 siteId 3333338732 siteName a11
16:12:36 siteId 4333338732 siteName b22
16:12:38 siteId 3333338732 siteName a11
16:12:39 siteId 3333338732 siteName a11
16:12:40 siteId 5333338732 siteName c33
16:12:41 siteId 4333338732 siteName b22
16:12:56 sisdeId 3333338732 siteName a11
16:12:77 siddteId 3333338732 siteName a11
16:12:88 sitseId 3333338732 siteName a11
16:12:99 sidddteId 3333338732 siteName a11
16:12:101 sitxxxxxxeId 3333338732 siteName 


1. 以空格作为域,截取 3列 以后的字符展示 (如果是制表符 即为 d\t)
1,cut -d" " -f 3- test.log 


执行命令之后结果为:

siteId 3333338732 siteName a11
siteId 4333338732 siteName b22
siteId 3333338732 siteName a11
siteId 3333338732 siteName a11
siteId 5333338732 siteName c33
siteId 4333338732 siteName b22
sisdeId 3333338732 siteName a11
siddteId 3333338732 siteName a11
sitseId 3333338732 siteName a11
sidddteId 3333338732 siteName a11
sitxxxxxxeId 3333338732 siteName a11




2.根据列名,截取特定行,然后输出
cut -d" " -f 3- test.log|awk '{if($1=="siteId" && $3=="siteName"{print $0}}'



结果如下
siteId 3333338732 siteName a11
siteId 4333338732 siteName b22
siteId 3333338732 siteName a11
siteId 3333338732 siteName a11
siteId 5333338732 siteName c33
siteId 4333338732 siteName b22


注意 awk中的 列是截取之后的。此时的siteId 为第一列了。

3.统计某重复行出现的次数,并输出去重后的每行, 截取特定的列 显示的时候用空格
less test.log |awk '{if($3=="siteId" && $5=="siteName"){a[$4" "$5" "$6]++}} END {for (j in a) print a[j],j}'


结果如下:
1 5333338732 siteName c33
2 4333338732 siteName b22
3 3333338732 siteName a11




4.将结果倒序输出less test.log |awk '{if($3=="siteId" && $5=="siteName"){a[$4" "$5" "$6]++}} END {for (j in a) print a[j],j}' |sort -rn

3 3333338732 siteName a11
2 4333338732 siteName b22
1 5333338732 siteName c33
分享到:
评论

相关推荐

    生产环境awk最佳实践

    #### 五、去重统计 为了统计每个名字出现的次数并按降序排序: ```bash [root@liuhx~]#awk '{arry[$1]++}END{for(i in arry){print arry[i], i}}' test | sort -nr 2 liu 1 zhao 1 wang 1 li 1 cui 1 chang ``` ...

    AWK简单教材.txt (全面)

    3. **去重排序**:结合`sort`命令对数据进行去重,如`awk '{if(!($0 in rec)){rec[$0]=1;print $0;}}' file`利用HASH表实现。 4. **数值计算**:统计字段总和,如`awk '{a+=$1; b+=$2} END {printf("a=%d\nb=%d\n", ...

    awk-培训.docx

    在Linux系统中,awk是一...通过这些基本操作,你可以实现条件查询、去重和分组等功能,这些功能类似于SQL中的SELECT、DISTINCT和GROUP BY等操作。awk的灵活性和强大功能使得它在文本处理和数据分析领域具有很高的价值。

    awk指南新手指南很好的资料

    7. **排序和去重**: ```bash awk '!seen[$0]++' file.txt | sort ``` 8. **计算数值**: ```bash awk '{sum += $1; sumsq += ($1 * $1)} END {print "Average is", sum / NR, "Standard deviation is", sqrt...

    shell两个文件去重的多种姿势

    大家都知道shell在文本处理上确有极大优势,比如多文本合并、去重等,但是最近遇到了一个难搞的问题,即两个大数据量文件去重。下面来看看详细的介绍吧。 要求  有txt文件A.txt和B.txt。 其中A为关键词和搜索量,以...

    awk实现Left、join查询、去除重复值以及局部变量讲解例子

    通过管道传递给 `sort` 和 `uniq` 进行去重。 **方法2:** ```bash awk '{a[$0]=$0;if (!($2 OFS $1 in a)) print a[$0] }' repea ``` 或 ```bash awk '{a[$0];if (!($2 OFS $1 in a)) print }' repea ``` 这两者都...

    Shell 分析日志文件高效命令详解.docx

    命令:`awk '{print $4,$1}' log_file | grep 16/Aug/2015:14 | awk '{print $2}'| sort | uniq | wc -l` 这条命令将 log_file 文件中的数据进行筛选,输出包含 2015 年 8 月 16 日 14 时这个小时内的行数,然后...

    Linux shell命令统计某列去重后的值

    ### Linux Shell 命令统计某列去重后的值 #### 概述 本文主要介绍如何使用 Linux Shell 命令来实现对文本文件中某列数据进行去重并统计的过程。具体应用场景为:根据 MAC 地址获取其对应的硬件版本和软件版本,并...

    详解PHP多个进程配合redis的有序集合实现大文件去重

    3.使用10个php进程读取文件 , 插入redis的有序集合结构中 , 重复的是插不进去的 ,因此可以起到去重的作用 <?php $file=$argv[1]; //守护进程 umask(0); //把文件掩码清0 if (pcntl_fork() != 0){ //是父进程,父...

    Linux实现文件内容去重及求交并差集

    当然,这只是Linux命令行工具中的一小部分,实际操作中,还可以结合`grep`、`awk`、`sed`等命令进行更复杂的文本处理。通过不断的实践和学习,你可以更好地利用Linux的强大功能来解决实际问题。

    文本文件去除重复记录

    在Linux环境中,awk命令是一个强大的文本处理工具,也可以用于去重。例如: ```bash awk '!seen[$0]++' 原始文件 > 去重后文件 ``` 这里`seen`是一个关联数组,用于存储已出现过的行,`$0`表示当前行。`!seen[$0]+...

    shell中删除文件中重复行的方法

    line=$0}'`:管道符将排序后的结果传递给`awk`命令,通过比较当前行与前一行是否相同来决定是否打印。 - 或者使用简化的表达式`awk '!seen[$0]++' log`,其中`$0`代表当前行,`seen`数组用于记录每行是否出现过。 *...

    nginx-log-analysis:用于分析 nginx 日志文件的很棒的 linux shell 命令的精选列表

    6. **`sort`** 和 **`uniq`**:对结果排序并去重。如按访问频率降序排列: ``` cut -d ' ' -f 7 /var/log/nginx/access.log | sort | uniq -c | sort -nr ``` 7. **`wc`**:计算行数、单词数、字符数。如统计...

    linux shell实现求一个多维数组中的最大和最小值

    然后使用 `sort` 进行排序,`uniq` 去重,并通过 `grep` 过滤掉空白行。最后,使用 `head` 和 `tail` 获取最小值和最大值。 ### 总结 以上四种方法分别展示了不同的技术来解决相同的问题:在一个包含多维数组的...

    SHELL 数据转化

    外部工具如`sort`、`uniq`和`join`等,能帮助我们排序、去重和合并数据。 在数据转化过程中,我们通常需要进行以下步骤: 1. **数据读取**:使用`cat`、`more`或`less`命令查看文件内容,`head`和`tail`用于查看...

    删除TXT中相同数据

    此外,还有许多其他工具和库,如awk、sed在Unix/Linux环境下,或者Excel、Notepad++等图形界面工具,也能够帮助完成类似的去重任务,但它们的操作方式和实现原理会有所不同。 总之,删除TXT中相同数据是一项基础的...

    windows下的uniq

    这里提到的"windows下的uniq"实际上可能是指一个名为UNIQUE.exe的程序,它用于处理数据,去除重复行,与Gawk(GNU Awk)配合工作,提供数据分析中的去重能力。 `uniq`命令在Unix/Linux中是一个非常常见的文本处理...

Global site tag (gtag.js) - Google Analytics