1

Я использую Ubuntu и ищу хороший редактор для редактирования файла> 4 ГБ. Мне просто нужно поместить содержимое в конец и начало файла. Я полагаю, я мог бы использовать что-то вроде

cat "text to add" >> huge_file

Добавить в файл. Это путь? Как насчет подготовки? В общем, какой маршрут лучше, если я хочу редактировать где-то посередине?

Я попробовал VIM, и он с треском провалился. Я предполагаю, что Emacs и Nano будет еще хуже. Что еще там? Я предполагаю, что для достижения того, что я ищу, редактор должен быть специально разработан для этого, не сохраняя все содержимое файла в памяти.

5 ответов5

4

Это частичный ответ, но да, если вы просто добавляете, я бы использовал:

cat extra.txt >> huge_file.txt

или же

echo "Single line to add" >> huge_file.txt

Для подготовки я бы сделал:

cat extra.txt huge_file.txt > huge_file_new.txt
2

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

С vim не забудьте попробовать плагин LargeFile.

Bvi - это версия vi, предназначенная для двоичных файлов. Он может редактировать часть файла (то есть из положения x в положение y).

На странице сравнения редактора Википедии есть столбец с поддержкой больших файлов. Ситуация довольно мрачная.

1

Ultraedit - единственный редактор, который делает это хорошо. Я также предпочел бы OSS. Один не существует. Я особенно удивлен, что это не способность vi ... это такой швейцарский армейский нож.

0

UltraEdit способен редактировать файл, не загружая его в память. Я еще не тестировал его версию для Linux, и я также не тестировал файл размером> 4 ГБ, поэтому я не могу дать никаких гарантий, но я отредактировал несколько огромных (~ 1,5 ГБ) файлов в версии для Windows (и давным-давно тоже ).

0

Просто потому, что я нашел это через Google в поисках чего-то похожего, это еще один метод, который я нашел.

Ситуация: у вас есть файл объемом 4,0 ГБ, и вам нужно отредактировать номер строки 120.

Решение: использовать голову и хвост, чтобы получить все, кроме строки, которую вы хотите редактировать.

# cat origfile.txt 
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
# head -n 5 origfile.txt >> newfile.txt
# echo "line 6" >> newfile.txt 
# tail -n +7 origfile.txt >> newfile.txt 
# cat newfile.txt 
 1
 2
 3
 4
 5
 line 6
 7
 8
 9
 10

Из моего хвоста тестирования не будет загружать весь файл в память все сразу.

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