首页 > 解决方案 > 将第一个文件的第一列和第二列与第二个文件的第一列匹配

问题描述

想将第一个文件的第一列和第二列与第二个文件的第一列进行比较。

我执行以下操作:

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

a c 0.1
a b 0.4
b d 0.1
b a 0.8
b c 0.8
c b 0.7
c a 0.6
c d 0.9
d c 0.3 

文件2

b 3 33 44
c 2 44 11
d 5 12 21 

预期输出:

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

标签: perlawksed

解决方案


file2之前的阅读file1更实用。

$ 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

推荐阅读