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