我有两个制表符delim文件
file1
LOC100224866 1 325001 0.133977
LOC105758527 1 75001 0.252737
LOC100218126 1 85001 0.174872
LOC105758529 1 125001 0.02342
NRF1 1 175001 0.257585
UBE2H 1 225001 0.303165
KLHDC10 1 275001 0.22267
TMEM209 1 295001 0.273941
CPA2 1 315001 0.181312
CEP41 1 345001 0.248943
和
file2
0.265838 CLIC6
0.390470 NRF1
0.126332 UBE2H
0.236400 LOC100224866
0.181189 DOPEY2
0.288050 MORC3
0.182429 CHAF1B
0.220355 SIM2
0.106513 HLCS
0.177958 DSCR3
我想将col1 file1与col2 file2匹配,并将那些与file1匹配的行添加为file2中的新列,从而保留了file2中条目的顺序。
这样输出将是
0.390470 NRF1 NRF1 1 175001 0.257585
0.126332 UBE2H UBE2H 1 225001 0.303165
0.236400 LOC100224866 LOC100224866 1 325001 0.133977
我从类似的帖子中尝试了几种策略,但是所有策略都失败了。 尝试过例如
awk -F$"\t" 'NR==FNR{a[$1]=$0; next} ($2 in a) {print $1, $2, a[$1] }' file2 file1
答案 0 :(得分:3)
您正在从文件1中找到错误的密钥。
$ awk 'NR==FNR{a[$2]=$1; next} $1 in a{print a[$1],$0}' file2 file1
0.390470 NRF1 1 175001 0.257585
0.126332 UBE2H 1 225001 0.303165
0.236400 LOC100224866 1 325001 0.133977
密钥需要匹配,如果您想重复执行print a[$1],$1,$0
,则无需再次打印。