Удаление строк в текстовом файле 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 

Благодарю.

  • как сделать псевдоним, чтобы команда grep короче
  • Как мне grep и сортировать с помощью этого конкретного шаблона?
  • Grep список для слова, которое существует в строке, и игнорировать все другие строки, которые содержат это слово
  • Как использовать отрицание команды в цикле while с grep в сценарии оболочки?
  • Сопоставьте шаблон и замените первый экземпляр строки после нее
  • Что делает «grep -v» ^. $ "" Do
  • Подсчитайте количество строк, найденных grep
  • Grep точное количество цифр и некоторые другие символы
  • 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

    Терминатор не запускается в i686, проблема DBus в Python

    Как инициировать процесс для скрипта через cronjob, статус монитора и время выполнения журнала

    Диски (в корпусе USB) продолжают просыпаться, даже если они не установлены

    Обнаружение устройства криптоподъема

    Какие службы должны быть остановлены с помощью скриптов preinst против prerm?

    Как запустить скрипт после входа в систему с помощью gdm?

    Сделайте курсор мыши над текстовыми областями более узкими в Gnome и KDE

    Получите дополнение к результату команды ls

    В awk, как я могу сделать логическое значение, которое я могу переключить?

    Возможно ли записывать звук непосредственно на оптический дисковод компьютера?

    grep два условия, один отрицательный, без трубопровода?

    Предоставить пользователю разрешение на доступ к файлам в каталоге

    код выхода функции ip

    как скопировать часть текстового файла побайтно в другой текстовый файл? dd, head или?

    xinput – Ctrl + <Left> неправильно, если сопоставление истории-поиска-назад

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