2つのファイルを比較したいのですが、locus_file.txtは非常に大きなファイルで、atrr.txtは小さなファイルです。最初のファイルの最初の2つの列をatrr.txtの2番目の列と一致させ、プロパティを一緒に印刷したいと思います。
locus_file.txt: 大容量ファイル
LOC_Os02g47020, LOC_Os03g57840,0.88725114
LOC_Os02g47020, LOC_Os07g36080,0.94455624
LOC_Os02g47020, LOC_Os03g02590,0.81881344
attr.txt: 属性ファイル
blue LOC_Os02g47020
red LOC_Os02g40830
blue LOC_Os07g36080
yellow LOC_Os03g57840
red LOC_Os03g02590
希望の出力:
LOC_Os02g47020, LOC_Os03g57840,0.88725114,blue, yellow
LOC_Os02g47020, LOC_Os07g36080,0.94455624,blue, blue
LOC_Os02g47020, LOC_Os03g02590,0.81881344,blue, red
注:たとえば、目的の出力の最初の行では、列4の色はatrr.txtのLOC_Os02g47020、列5の色はatrr.txtのLOC_Os03g57840です。
ベストアンサー1
解決策awk
:
$ awk '
FNR == NR {a[$2] = $1;next}
{
split($1,f1,",");
split($2,f2,",");
print $0,a[f1[1]],a[f2[1]];
}' OFS=, attr.txt locus_file.txt
LOC_Os02g47020, LOC_Os03g57840,0.88725114,blue,yellow
LOC_Os02g47020, LOC_Os07g36080,0.94455624,blue,blue
LOC_Os02g47020, LOC_Os03g02590,0.81881344,blue,red