Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 将第一个文件的第一列和第二列与第二个文件的第一列匹配_Perl_Awk_Sed - Fatal编程技术网

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