2
これは何度も尋ねられていますが、何らかの理由で私の解決策が機能していません。二つの.txtファイル:列を別々の.txtファイルで比較する
FILE1.TXT
I 27804 C A 0.987700768 1024 0.518987342
I 27810 T C 0.99418488 1054 0.518987342
I 27816 G A 0.994650485 1085 0.518987342
I 27822 T C 0.998170732 1097 0.518987342
I 27825 C T 0.998170732 1101 0.518987342
FILE2.TXT
I 27804 . C A 1115.77
I 27810 . T C 1141.77
I 27816 . G A 1141.77
I 27822 . T C 1141.77
I 27823 . C A 1141.77
I 27825 . C T 1141.77
FILE2.TXTは、多数の列を(明確にするため図示せず)が含まれています。
File1.txtで$ 1、$ 2、$ 3、および$ 4を使用して、File2.txtの対応する行を特定し、File2.txtの完全な行を印刷したいとします。
所望の出力は次のようになります。
I 27804 . C A 1115.77
I 27810 . T C 1141.77
I 27816 . G A 1141.77
I 27822 . T C 1141.77
I 27825 . C T 1141.77
このエントリにスキップ:
I 27823 . C A 1141.77
それがFILE1.TXTに存在しないので。
awk 'NR==FNR{a[$1,$2,$3,$4]=$0;next}{if(b=a[$1,$2,$4,$5]){print b}}' file1.txt file2.txt
をしかし、これはFILE1.TXT行を返すことだけでなく、表示されます - しかし、単にFILE1.TXTの全体を印刷し直し:
私は単純に使用してみました。私は何を間違えたのですか?
'B = [...]'割り当てです。 'file1.txt'の行が必要ない場合は、まず' a'に格納する必要はありません。 –