Bu bir çok kez sorulmuştur, ancak bir nedenden dolayı çözümüm çalışmıyor. İki .txt dosyaları:Ayrı .txt dosyalarındaki sütunların karşılaştırılması
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 sütunların çok sayıda (netlik için gösterilmemiştir) içermektedir.
File2.txt dosyasında karşılık gelen satırları tanımlamak için File1.txt dosyasına $ 1, $ 2, $ 3 ve $ 4 kullanmak ve sonra da File2.txt satırını tam olarak yazdırmak istiyorum.
İstenilen çıkış olacaktır: Bu girdiyle
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
atlanan:
I 27823 . C A 1141.77
o file1.txt mevcut olmadığından.
awk 'NR==FNR{a[$1,$2,$3,$4]=$0;next}{if(b=a[$1,$2,$4,$5]){print b}}' file1.txt file2.txt
Ama bu file1.txt hatları dönmek için sadece görünür - ancak sadece file1.txt bütününü yeniden yayınladı:
Sadece kullanarak denedim. Neyi yanlış yaptım?
'b = [...]' atama bir olduğunu. Ve eğer 'file1.txt' satırına ihtiyacınız yoksa, ilk etapta 'a' içinde saklamanız gerekmez. –