Bash의 다른 파일에서 항목 목록 제거

Bash의 다른 파일에서 항목 목록 제거

한 파일에 나열된 항목을 다른 파일(순서 없이)에서 제거하는 가장 효율적인 방법(반복 명령 실행 없음)은 무엇입니까?

두 번째 파일에서 일치하지 않는 항목 목록을 쉽게 얻을 수 있습니다.

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)

관련 정보