他のファイルから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
。