档案1:
1 0.3
2 0.1
3 0.4
4 0.8A档案:
2 0.7
4 0.2
6 0.5
8 0.9B档案:
2 0.4
6 0.6目标
一步步地:
文件2中的期望输出:
1 0.3
2 1.2
3 0.4
4 1.0也就是说,File 2= File 1,除文件1中的$1与文件a或b中的$1匹配的行外,都是在$2中加在一起的。
相似问题
我已经收到关于这个问题的advice,用于匹配和添加两个文件,使用下面的代码
awk 'FNR==NR{a[$1]=$2;next} {$2=$1 in a?$2+a[$1]:$2} 1' Input_file2 Input_file1 >> output_file但是,代码不能同时处理3个输入文件。如果我把它们分开处理(一次两个文件,即。文件1+文件a,然后文件1+文件b),我最后两次添加文件1的值。
由于我可能有3-6个文件需要比较,所以我不能简单地执行文件a+ >> b >>文件c,然后是文件1+>>文件2。
摘要
我想要一个脚本,可以搜索在$1之间的三个文件之间的匹配,然后打印$2 (文件1) + $2 (文件a和/或文件b),只要找到$1匹配。输出文件2,它打印文件1与$2中的新求和值,无论何处发生$1中的匹配。任何帮助都是非常感谢的!
发布于 2019-03-05 16:04:54
这里是一个:
$ awk '
NR==FNR { # store the file1 to a hash and add to its elements
a[$1]=$2
next
}
($1 in a) {
a[$1]+=$2
}
END {
for(i in a)
print i,a[i] # print in no particular order
}' file1 filea fileb输出:
1 0.3
2 1.2
3 0.4
4 1https://stackoverflow.com/questions/55006777
复制相似问题