使用awk匹配不同行中的值
我的文件类似于以下示例:使用awk匹配不同行中的值,awk,Awk,我的文件类似于以下示例: 8 1 8 2 17 4 17 5 17 2 19 1 19 4 19 3 19 11 我想匹配第一列(具有相同的值),并使用awk对第二列求和,如下所示 结果将是 8 3 17 11 19 19 等等 我们将非常感谢你的帮助 $ awk '$2>0{sum[$1]+=$2} END{for (i in sum) {print i,sum[i]}}' input | sort -n 8 3 17 11 19 19 实施说明: 当awk读取文件中的每一行
8 1
8 2
17 4
17 5
17 2
19 1
19 4
19 3
19 11
我想匹配第一列(具有相同的值),并使用awk对第二列求和,如下所示
结果将是
8 3
17 11
19 19
等等
我们将非常感谢你的帮助
$ awk '$2>0{sum[$1]+=$2} END{for (i in sum) {print i,sum[i]}}' input | sort -n
8 3
17 11
19 19
实施说明:
- 当
读取文件中的每一行时,命令awk
将保存部分和$2>0{sum[$1]+=$2}
- 读取文件后,命令
打印出结果END{for(i in sum){print i,sum[i]}
- 因为awk的数组是无序的,
的输出被馈送到awk
以产生视觉上令人愉悦的排序输出sort-n
printf
代替print
:
$ awk '$2>0{sum[$1]+=$2} END{for (i in sum) {printf "%3s%3s\n",i,sum[i]}}' input | sort -n
8 3
17 11
19 19
实施说明:
- 当
读取文件中的每一行时,命令awk
将保存部分和$2>0{sum[$1]+=$2}
- 读取文件后,命令
打印出结果END{for(i in sum){print i,sum[i]}
- 因为awk的数组是无序的,
的输出被馈送到awk
以产生视觉上令人愉悦的排序输出sort-n
printf
代替print
:
$ awk '$2>0{sum[$1]+=$2} END{for (i in sum) {printf "%3s%3s\n",i,sum[i]}}' input | sort -n
8 3
17 11
19 19
实施说明:
- 当
读取文件中的每一行时,命令awk
将保存部分和$2>0{sum[$1]+=$2}
- 读取文件后,命令
打印出结果END{for(i in sum){print i,sum[i]}
- 因为awk的数组是无序的,
的输出被馈送到awk
以产生视觉上令人愉悦的排序输出sort-n
printf
代替print
:
$ awk '$2>0{sum[$1]+=$2} END{for (i in sum) {printf "%3s%3s\n",i,sum[i]}}' input | sort -n
8 3
17 11
19 19
实施说明:
- 当
读取文件中的每一行时,命令awk
将保存部分和$2>0{sum[$1]+=$2}
- 读取文件后,命令
打印出结果END{for(i in sum){print i,sum[i]}
- 因为awk的数组是无序的,
的输出被馈送到awk
以产生视觉上令人愉悦的排序输出sort-n
printf
代替print
:
$ awk '$2>0{sum[$1]+=$2} END{for (i in sum) {printf "%3s%3s\n",i,sum[i]}}' input | sort -n
8 3
17 11
19 19