本例循序渐进演示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
分享到:
相关推荐
#### 五、去重统计 为了统计每个名字出现的次数并按降序排序: ```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 ``` ...
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", ...
在Linux系统中,awk是一...通过这些基本操作,你可以实现条件查询、去重和分组等功能,这些功能类似于SQL中的SELECT、DISTINCT和GROUP BY等操作。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在文本处理上确有极大优势,比如多文本合并、去重等,但是最近遇到了一个难搞的问题,即两个大数据量文件去重。下面来看看详细的介绍吧。 要求 有txt文件A.txt和B.txt。 其中A为关键词和搜索量,以...
通过管道传递给 `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 ``` 这两者都...
命令:`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 命令来实现对文本文件中某列数据进行去重并统计的过程。具体应用场景为:根据 MAC 地址获取其对应的硬件版本和软件版本,并...
当然,这只是Linux命令行工具中的一小部分,实际操作中,还可以结合`grep`、`awk`、`sed`等命令进行更复杂的文本处理。通过不断的实践和学习,你可以更好地利用Linux的强大功能来解决实际问题。
3.使用10个php进程读取文件 , 插入redis的有序集合结构中 , 重复的是插不进去的 ,因此可以起到去重的作用 <?php $file=$argv[1]; //守护进程 umask(0); //把文件掩码清0 if (pcntl_fork() != 0){ //是父进程,父...
在Linux环境中,awk命令是一个强大的文本处理工具,也可以用于去重。例如: ```bash awk '!seen[$0]++' 原始文件 > 去重后文件 ``` 这里`seen`是一个关联数组,用于存储已出现过的行,`$0`表示当前行。`!seen[$0]+...
line=$0}'`:管道符将排序后的结果传递给`awk`命令,通过比较当前行与前一行是否相同来决定是否打印。 - 或者使用简化的表达式`awk '!seen[$0]++' log`,其中`$0`代表当前行,`seen`数组用于记录每行是否出现过。 *...
6. **`sort`** 和 **`uniq`**:对结果排序并去重。如按访问频率降序排列: ``` cut -d ' ' -f 7 /var/log/nginx/access.log | sort | uniq -c | sort -nr ``` 7. **`wc`**:计算行数、单词数、字符数。如统计...
然后使用 `sort` 进行排序,`uniq` 去重,并通过 `grep` 过滤掉空白行。最后,使用 `head` 和 `tail` 获取最小值和最大值。 ### 总结 以上四种方法分别展示了不同的技术来解决相同的问题:在一个包含多维数组的...
当处理大量数据时,这对于去重非常有用。 #### 5. **tr** `tr` 命令用于替换、压缩和删除输入中的字符。它可以将一种字符集翻译成另一种字符集,对于文本格式转换很有帮助。 ### 示例应用 假设我们有一个日志文件...
外部工具如`sort`、`uniq`和`join`等,能帮助我们排序、去重和合并数据。 在数据转化过程中,我们通常需要进行以下步骤: 1. **数据读取**:使用`cat`、`more`或`less`命令查看文件内容,`head`和`tail`用于查看...
此外,还有许多其他工具和库,如awk、sed在Unix/Linux环境下,或者Excel、Notepad++等图形界面工具,也能够帮助完成类似的去重任务,但它们的操作方式和实现原理会有所不同。 总之,删除TXT中相同数据是一项基础的...
这里提到的"windows下的uniq"实际上可能是指一个名为UNIQUE.exe的程序,它用于处理数据,去除重复行,与Gawk(GNU Awk)配合工作,提供数据分析中的去重能力。 `uniq`命令在Unix/Linux中是一个非常常见的文本处理...