두 파일에서 중복 항목 찾기 및 제거

두 파일에서 중복 항목 찾기 및 제거

예를 들어 30,000개의 바코드가 포함된 File1 파일이 있습니다.

A6KAIIYY
A6KFNRGY
X6LPXV55
X6LQ5217

file1을 읽은 다음 35,000개의 바코드가 포함된 다른 파일(file2)에서 각 바코드를 검색하고 발견되면 해당 줄을 삭제해야 합니다. 쉘 스크립트를 작성하는 방법이 있습니까?

답변1

grep+mv해결책:

grep -vf file1 file2 > /tmp/f2_tmp && mv /tmp/f2_tmp file2
  • -v- 일치하지 않는 행 선택
  • -f FILE- 모드 가져오기FILE
  • /tmp/f2_tmp- 임시 파일

답변2

file1의 모든 바코드가 file2에 있는 경우 두 파일을 연결하고 정렬한 다음 uniq -u고유한 줄(file1에 없는 file2의 줄)만 인쇄하는 데 사용됩니다.

cat file file2 | sort | uniq -u

그렇지 않으면 각 파일이 정렬되고 를 사용하여 diff file1 file2파일 1의 바코드에만 '<' 접두사가 붙고 파일 2의 바코드에만 '>' 접두사가 붙습니다.

diff file1 file2 | grep -e '^> ' | sed 's/^> //'

관련 정보