Найти и заменить текст в большом файле размером 47 ГБ - PullRequest
37 голосов
/ 05 августа 2011

Я должен выполнить некоторые задачи по поиску и замене довольно большого файла, размером около 47 ГБ.

Кто-нибудь знает, как это сделать?Я пытался использовать такие сервисы, как TextCrawler, EditpadLite и другие, но ничто не поддерживает этот большой файл.

Я предполагаю, что это можно сделать из командной строки.

У вас есть идея, как это можно сделать?

Ответы [ 6 ]

36 голосов
/ 05 августа 2011

Sed (потоковый редактор для фильтрации и преобразования текста) - ваш друг.

sed -i 's/old text/new text/g' file

Sed выполняет преобразования текста за один проход.

31 голосов
/ 04 июня 2014

Я использую FART - Найти и заменить текст Lionello Lunesu.

Очень хорошо работает на Windows Seven x64.

Вы можете найти и заменить текст с помощью этой команды:

fart -c big_filename.txt "find_this_text" "replace_to_this"
4 голосов
/ 09 февраля 2017

В Unix или Mac:

sed 's / oldstring / newstring / g' oldfile.txt> newfile.txt

быстро и просто ...

0 голосов
/ 18 января 2018

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

sed 's/[nN]//g' oldfile.fasta > newfile.fasta

для замены всех экземпляров n в моем 7-гигабайтном файле.

Если я пропустил аспект > newfile.fasta, потребовалось бы много времени, чтобы прокрутить экран, показываямне каждую строку файла.

С > newfile он запустил его в считанные секунды на сервере Ubuntu

0 голосов
/ 22 июля 2016

Для меня ни один из предложенных здесь инструментов не работает хорошо.Textcrawler съел всю память моего компьютера, SED вообще не работал, Editpad жаловался на память ...

Решение: создайте свой собственный скрипт на python, perl или даже C ++.

Или используйте инструмент PowerGrep, это самый простой и быстрый вариант.

Я не пробовал пердеть, это только командная строка и, возможно, не очень дружелюбный.
Некоторые шестнадцатеричные редакторы, такие как Ultraedit, также работают хорошо.

0 голосов
/ 05 августа 2011

Если вы используете Unix-подобную систему, вы можете использовать cat |sed для этого

cat hosted_domains.txt | sed s/com/net/g

Пример заменяет com на net в списке доменных имен, а затем вы можете передать вывод в файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...