예를 들어 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/^> //'