Каков наиболее эффективный метод (без повторного выполнения команды) для удаления элементов, перечисленных в одном файле, из другого файла (неупорядоченного)?

Можно легко получить список несоответствующих элементов во втором файле,

cat first_file.txt second_file.txt | sort | uniq -u

но это также будет содержать все непревзойденные элементы из первого файла тоже ... что теперь?

1 ответ1

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)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .