페어링된 파일에서 단어 목록 찾기

페어링된 파일에서 단어 목록 찾기

다른 파일에서 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.

관련 정보