我有一个简单的问题,但一直无法解决。我想将 的第 2、3、4、5 和 6 列与 的File1
相同列进行比较File2
,如果它们匹配,则将Column1
添加File2
到。Column7
File1
我曾尝试过awk NR == FNR
基于以前发布的类似问题的解决方案,但无法获得正确的输出。
File1
:
Column1 Column2 Column3 Column4 Column5 Column6
Genome1 1 1 2 1 2
Genome2 1 1 2 1 2
Genome3 1 2 2 1 2
File2
:
Column1 Column2 Column3 Column4 Column5 Column6
Profile1 1 1 2 1 2
Profile2 1 2 2 1 2
Profile3 1 3 2 1 2
预期成绩:
File1
Column1 Column2 Column3 Column4 Column5 Column6 Column7
Genome1 1 1 2 1 2 Profile1
Genome2 1 1 2 1 2 Profile1
Genome3 1 2 2 1 2 Profile2
你有什么建议吗?
答案1
您需要先将要匹配的所有列保存在第二个文件的相同列上,然后对从第一个文件中读取的每一行进行比较:
awk 'NR==FNR {
if(NR==1) $1="Column7"; file2[$2, $3, $4, $5, $6]=$1; next; };
(($2, $3, $4, $5, $6) in file2){ print $0, file2[$2, $3, $4, $5, $6];
}' OFS='\t' file2 file1
Column1 Column2 Column3 Column4 Column5 Column6 Column7
Genome1 1 1 2 1 2 Profile1
Genome2 1 1 2 1 2 Profile1
Genome3 1 2 2 1 2 Profile2