从成对的文件中查找单词列表

从成对的文件中查找单词列表

我有一个包含标识符列表的文件,我必须从另一个文件中 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

相关内容