ペアリングされたファイルで単語リストを検索する

ペアリングされたファイルで単語リストを検索する

他のファイルからgrepする必要がある識別子のリストを含むファイルがあります。一対のファイル(たとえば、100ペア)に対してこれを行う必要があります。このファイルは次のとおりです。

A.not.txt.重複:

chr1_937201_937501  
chr1_937501_937801  

A.not.txt:

chr1_937201_937501  329 1  
chr1_937201_937501  144 1  
chr1_937501_937801  329 1  
chr1_937501_937801  144 1  
chr1_1875601_1875901    764 1  
chr1_1875601_1875901    183 1  
chr1_2246701_2247001    377 1  
chr1_2246701_2247001    194 1  
chr1_937201_937501  0   0  
chr1_937201_937501  0   0  
chr1_937501_937801  0   0  
chr1_937501_937801  0   0  
chr1_1875601_1875901    0 0  
chr1_1875601_1875901    0   0  
chr1_2246701_2247001    0   0  
chr1_2246701_2247001    0   0  

出力:

chr1_937201_937501  329 1  
chr1_937201_937501  144 1  
chr1_937501_937801  329 1  
chr1_937501_937801  144 1

私はこれができることを知っています:

grep -f A.not.txt.duplicated A.not.txt > A.not.txt.duplicated  

しかし、問題は、繰り返したいペアが複数あることです。

どんなアイデアにも感謝します。

ベストアンサー1

使用参加する

for f in *.not.txt.duplicated; do
  join <(sort "$f") <(sort "${f%.duplicated}") > "$f.out"
done

例のコマンドに示すように、結果が ".duplicate"ファイルを上書きするようにするには、行の&& mv "$f.out" "$f"末尾にを追加しますjoin

おすすめ記事