Удаление строк в текстовом файле LARGE, содержащем строку, найденную в другом текстовом файле LARGE – FILES SORTED

Все еще возникают проблемы с попыткой удалить строки в файле LARGE, содержащем строки, перечисленные в другом файле LARGE.

grep -vwFf file1 file2 - FAILS due to memory exhaustion. 

Я использовал:

  comm -23 file1 file2 

[ https://stackoverflow.com/questions/4366533/remove-lines-from-file-which-appear-in-another-file][1]

Он работает для отсортированных файлов и действительно больших файлов, но работает только для удаления повторяющихся строк – не удаляет строки, содержащие строку.

Два больших файла, которые у меня есть, сортируются так, что строки, которые я ищу, находятся в начале каждой строки:

текстовый файл:

  AAAAA blah blah blah AAAAB blas blas blas CCCCC sdf sf sdf 

строковый файл

  AAAAA CCCCC 

Благодарю.

  • подсчитывать строки, соответствующие строке в каждом подкаталоге, и их подкаталоги
  • Использование sed / awk для извлечения первого «токена не-whitspace» в каждой строке
  • Как обрабатывать файл как одну строку с помощью grep для применения шаблона поиска регулярного выражения?
  • как бороться с сложной иерархией?
  • Обработка текста для извлечения полей структуры
  • Как печатать строки, соответствующие шаблону с помощью grep?
  • Есть ли более быстрый способ получить этот выходной файл в Linux?
  • Как бы я grep для записи файла паролей без использования 'username'
  • One Solution collect form web for “Удаление строк в текстовом файле LARGE, содержащем строку, найденную в другом текстовом файле LARGE – FILES SORTED”

    Почему вы не ломаете $file1 во многие более мелкие (в / tmp или используете mktemp), а затем перебираете каждый файл $file1 , используя его для grep … какой идеальный размер файла шаблона ( $file1 ) есть, зависит от вашей системы.

    Здесь каждый $file1 будет иметь 1000 строк.

    i=1 while [ $i -lt $count ] do sed -n "$i,$(($i +1000))p" file1.txt >> /tmp/file${1}.txt i=$(( $i + 1001)) done

    Теперь у вас есть куча файлов в / tmp с именем file.txt, поэтому вы делаете:

    for file1 in $(ls /tmp/file*.txt) do grep -vwFf $file1 file2 done

    Безопаснее с mktemp:

    TEMP_DIR=$(mktemp)

    for file1 in $(ls ${TEMP_DIR}/file*.txt) do grep -vwFf $file1 file2 done

    Interesting Posts

    Может ли вредоносное ПО, запущенное пользователем без прав администратора или sudo, нанести вред моей системе?

    Невозможно приостановить, когда крышка отключается, если подключен внешний дисплей

    Как разбить строку на массив в bash

    Как настроить Samba для использования идентификатора входа Windows?

    Linux Mint 17 Cinnamon: как я могу запустить приложение до экрана входа в систему?

    Как восстановить эту ошибку клиента NIS и NFS?

    значение этой строки в службе, созданной с использованием sysintv

    отрезать команду, заказ не сохранился?

    Восстановить удаленный раздел LUKS

    Новый LMDE2 устанавливает и правильно перемещает / домашний раздел

    Поддерживает ли fetchmail эти функции IMAP? Если да, то как?

    Как оценить специальные символы, чтобы увидеть их в текстовом редакторе?

    Внезапный Wi-Fi от Arch Linux отключается и не может повторно подключиться

    Debian: изменение исходного каталога в тройной загрузке

    Выполнение команд обслуживания в chroot pbuilder с использованием cron

    Linux и Unix - лучшая ОС в мире.