Perl 将第一个文件的第一列和第二列与第二个文件的第一列匹配
要将第一个文件的第一列和第二列与第二个文件的第一列进行比较 我做了以下工作:Perl 将第一个文件的第一列和第二列与第二个文件的第一列匹配,perl,awk,sed,Perl,Awk,Sed,要将第一个文件的第一列和第二列与第二个文件的第一列进行比较 我做了以下工作: awk 'FNR==NR{a[$1]=$2;next} ($1 in a) {print $2,$1,$3,$4}' file 1 file 2 我的脚本的结果是 3 b 33 44 2 c 44 11 5 d 12 21 我只得到了第一列的结果,它不会打印重复的值。我希望我的输出也具有重复值 文件1 文件2 预期产出: 3 b 33 44 5 d 12 21 0.1 3 b 33 44 2 c 44
awk 'FNR==NR{a[$1]=$2;next} ($1 in a) {print $2,$1,$3,$4}' file 1 file 2
我的脚本的结果是
3 b 33 44
2 c 44 11
5 d 12 21
我只得到了第一列的结果,它不会打印重复的值。我希望我的输出也具有重复值
文件1
文件2
预期产出:
3 b 33 44 5 d 12 21 0.1
3 b 33 44 2 c 44 11 0.8
2 c 44 11 3 b 33 44 0.7
2 c 44 11 5 d 12 21 0.9
5 d 12 21 2 c 44 11 0.3
在
file1
之前阅读file2
更实用
$ awk 'NR==FNR {
a[$1]=($2 OFS $1 OFS $3 OFS $4)
next
}
($1 in a)&&($2 in a) {
print a[$1],a[$2],$3
}' file2 file1
3 b 33 44 5 d 12 21 0.1
3 b 33 44 2 c 44 11 0.8
2 c 44 11 3 b 33 44 0.7
2 c 44 11 5 d 12 21 0.9
5 d 12 21 2 c 44 11 0.3
3 b 33 44 5 d 12 21 0.1
3 b 33 44 2 c 44 11 0.8
2 c 44 11 3 b 33 44 0.7
2 c 44 11 5 d 12 21 0.9
5 d 12 21 2 c 44 11 0.3
$ awk 'NR==FNR {
a[$1]=($2 OFS $1 OFS $3 OFS $4)
next
}
($1 in a)&&($2 in a) {
print a[$1],a[$2],$3
}' file2 file1
3 b 33 44 5 d 12 21 0.1
3 b 33 44 2 c 44 11 0.8
2 c 44 11 3 b 33 44 0.7
2 c 44 11 5 d 12 21 0.9
5 d 12 21 2 c 44 11 0.3