한 파일에 나열된 항목을 다른 파일(순서 없이)에서 제거하는 가장 효율적인 방법(반복 명령 실행 없음)은 무엇입니까?
두 번째 파일에서 일치하지 않는 항목 목록을 쉽게 얻을 수 있습니다.
cat first_file.txt second_file.txt | sort | uniq -u
하지만 여기에는 첫 번째 파일의 일치하지 않는 항목도 모두 포함됩니다. 이제 어떻게 될까요?
답변1
이 awk
프로그램은 각 파일을 단일 패스로 처리합니다.
awk '
NR == FNR {f1[$0] = 1; next}
!($0 in f1)
' file1 file2
comm
이 작업에 유용합니다. 정렬하려면 입력 파일이 필요합니다.
# output lines unique to file2
comm -13 <(sort file1) <(sort file2)