私は、私は2番目のファイル、file2
から特定の列を抽出するために使用する必要があるキーのファイル、file1
、(新しいライン上の各キー)を持っています。ファイル1の長さは46行であり、file2
ははるかに大きく、>20,000
行です。 file1
に表示されるすべてのキーがfile2
に表示されるわけではなく、その逆もあります。awkを使用してキーに基づいてファイルから列を抽出する方法は?
FILE1:
322510472
322510472
322510472
322510484
322510484
322510484
322510493
FILE2:
109287879,Invertebrate_iridescent_virus_3,109287879,148,1,148,NCVOG0391,0
109287880,Invertebrate_iridescent_virus_3,109287880,458,1,458,,
109287881,Invertebrate_iridescent_virus_3,109287881,156,1,156,,
109287882,Invertebrate_iridescent_virus_3,109287882,451,1,451,NCVOG1423,0
109287883,Invertebrate_iridescent_virus_3,109287883,217,1,217,NCVOG4910,2
109287884,Invertebrate_iridescent_virus_3,109287884,494,1,494,NCVOG0211,0
109287885,Invertebrate_iridescent_virus_3,109287885,447,1,447,NCVOG1077,0
109287886,Invertebrate_iridescent_virus_3,109287886,347,1,347,NCVOG0967,2
両方file1
とfile2
列1及びfile2
の3で表示されるキーでソートされています。
file2
から第三
file1
から私のキーを含むファイル、
file3
、と同様に、列2と7を生成するために、と一致するエントリがに存在しない場合でも、
file1
中に存在する任意のキーを省略しない必要
file2
。
私は、キー、file1
の私のファイルに46のエントリを持っていることを知っています。しかし、次のawkスクリプトを使用すると、出力は44行しか表示されません。
彼らは私もこれらのキーを含む他のファイルに保持する必要があり、実際のデータに対応して、私は、私のawkの出力で私のキーのいずれかを削除しないようにする必要があります。
提案がありますか?すべての助けをありがとう。私はしばらくの間、スタックのオーバーフローを読んできましたが、これは私の最初の質問です!
「$ 1 in a」条件は、両方のファイルのエントリにのみ当てはまります。一致しなかったものも印刷する必要があります。もしキーが一意であれば、それぞれのマッチの後に 'a'からキーを削除し、' END'ブロックの残りのキーを反復することができます。後でソートすることもできます。しかし、データがすでにソートされているので、ここでは 'join'が良い解決法です。 – karakfa
問題を実際に表現できるサンプルデータを提供する必要があります –