Текстовый редактор для открытия больших (гигантских, огромных, больших) текстовых файлов [закрыто]

1023

Я имею в виду более 100 МБ; такие текстовые файлы могут раздвинуть редакторы.

Мне нужно просмотреть большой файл XML, но не могу, если редактор глючит.

Какие-либо предложения?

Дейв Джарвис
источник
166
На самом деле, текстовые файлы размером более 100 МБ или даже более 1 ГБ не так уж редки, как вы думаете (например, файлы журналов с загруженных серверов).
Андерс Сандвиг
15
Подлость: и не совсем текст. Я думаю, что требования чтения текстовых файлов и чтения двоичных файлов несколько отличаются. Вы можете пройти через base64 или uuencode.
Джои
2
Это должен быть как минимум аналогичный вопрос или даже связанный, как его задавали 18 месяцев назад ... stackoverflow.com/questions/102829/…
ONDEV
1
Я также искал ответ на этот точный вопрос, чтобы прочитать несколько огромных файлов журнала, которые я сгенерировал!
HorseloverFat
1
@BlairHippo Я чувствую то же самое, я почти нервничаю, когда задаю вопрос, потому что высока вероятность того, что кто-то скажет: «Закройте это, вместо этого он должен пойти в Wh whatExchange»
Rodolfo

Ответы:

1388

Свободные читатели только для чтения:

  • Средство просмотра больших текстовых файлов (Windows) - полностью настраиваемые темы (цвета, шрифты, перенос слов, размер вкладки). Поддержка горизонтального и вертикального разделения. Также поддержите следование файла и поиск по регулярному выражению. Очень быстрый, простой и имеет небольшой размер исполняемого файла.
  • klogg (Windows, macOS, Linux) - поддерживаемая ветвь glogg , основной функцией которой является поиск по регулярным выражениям. Он также может просматривать файлы, позволяет пользователю отмечать линии и имеет встроенную серьезную оптимизацию. Но с точки зрения пользовательского интерфейса это ужасно и неуклюже.
  • LogExpert (Windows) - «Замена графического интерфейса дляtail.» Это действительно анализатор файлов журнала, а не средство просмотра больших файлов, и в одном тесте потребовалось 10 секунд и 700 МБ ОЗУ для загрузки файла объемом 250 МБ. Но его отличительными чертами являются колонизатор (анализ журналов в формате CSV, JSONL и т. Д. И отображение в формате электронной таблицы) и подсветка (показывать строки с определенными словами в определенных цветах). Также поддерживает отслеживание файлов, вкладки, мультифайлы, закладки, поиск, плагины и внешние инструменты.
  • Листер (Windows) - очень маленький и минималистичный. Это один исполняемый файл, всего 500 КБ, но он все еще поддерживает поиск (с регулярными выражениями), печать, режим шестнадцатеричного редактора и настройки.
  • loxx (Windows) - поддерживает отслеживание файлов, выделение, номера строк, огромные файлы, регулярные выражения, несколько файлов и представлений и многое другое. Бесплатная версия не может: обрабатывать регулярные выражения, фильтровать файлы, синхронизировать временные метки и сохранять измененные файлы.

Бесплатные редакторы:

  • Ваш обычный редактор или IDE. Современные редакторы могут обрабатывать удивительно большие файлы. В частности, Vim (Windows, macOS, Linux), Emacs (Windows, macOS, Linux), Notepad ++ (Windows), Sublime Text (Windows, macOS, Linux) и VS Code (Windows, macOS, Linux) поддерживают большие (~ 4 ГБ), если у вас есть оперативная память.
  • Редактор больших файлов (Windows) - открывает и редактирует файлы TB +, поддерживает Unicode, использует мало памяти, имеет специфичные для XML функции и включает двоичный режим.
  • GigaEdit (Windows) - Поддерживает поиск, статистику символов и настройку шрифтов. Но он глючит - с большими файлами он позволяет только перезаписывать символы, а не вставлять их; он не рассматривает LF как терминатор строки, только CRLF; и это медленно.

Встроенные программы (установка не требуется):

  • less (macOS, Linux) - традиционный инструмент подкачки командной строки Unix. Позволяет просматривать текстовые файлы практически любого размера. Может быть установлен на Windows, тоже.
  • Блокнот (Windows) - Достойный с большими файлами, особенно с отключенной переносом слов.
  • MORE (Windows) - это относится к WindowsMORE, а не к Unixmore. Консольная программа, позволяющая просматривать файл по одному экрану за раз.

Веб-зрители:

  • readfileonline.com - еще один просмотрщик больших файлов HTML5. Поддерживает поиск.

Платные редакторы:

  • 010 Editor (Windows, macOS, Linux) - открывает гигантские (размером до 50 ГБ) файлы.
  • SlickEdit (Windows, macOS, Linux) - открывает большие файлы.
  • UltraEdit (Windows, macOS, Linux) - открывает файлы размером более 6 ГБ, но для этого необходимо изменить конфигурацию: Меню »Дополнительно» Конфигурация »Обработка файлов» Временные файлы »Открыть файл без временного файла ...
  • EmEditor (Windows) - хорошо обрабатывает очень большие текстовые файлы (официально до 248 ГБ, но до 900 ГБ согласно одному отчету).
MultiplyByZer0
источник
60
VIM, или Emacs ... заберите свой яд, оба будут обрабатывать любые файлы, которые вы им бросаете. Я лично предпочитаю Emacs, но оба будут бить блокнот без особых проблем.
Майк Стоун
25
Emacs имеет максимальный размер буфера, зависящий от базовой архитектуры (32 или 64 бита). Я думаю, что в 32-битных системах вы получаете ошибку «превышен максимальный размер буфера» для файлов размером более 128 МБ.
Рафал Доугирд
82
Я только что попробовал Notepad ++ с лог-файлом 561 МБ, и он сказал, что он слишком большой
barfoon
9
@Rafal Интересно! Похоже на 64 бит это ~ 1024 петабайта. Причина связана с тем, что emacs должен отслеживать позиции буфера (например, точки)
бодтак
79
Но будьте осторожны, vim будет работать только до тех пор, пока в рассматриваемых файлах достаточно разрывов строк. Мне однажды пришлось редактировать ок. Файл размером 150 МБ без каких-либо разрывов строк, и пришлось прибегнуть к gedit, потому что vim не смог его обработать.
Бенно
192

Советы и приемы

Меньше

Почему вы используете редакторы, чтобы просто посмотреть (большой) файл?

Под * nix или Cygwin просто используйте меньше . (Существует известная поговорка - «меньше - это больше, больше или меньше» - потому что «меньше» заменило более раннюю команду Unix «больше», с добавлением, которое вы можете прокрутить обратно вверх.) Поиск и навигация в разделе «меньше» очень похож Vim, но нет файла подкачки и мало оперативной памяти.

Есть Win32 порт GNU меньше. Смотрите раздел «меньше» ответа выше.

Perl

Perl хорош для быстрых сценариев, а его ..оператор (триггера диапазона) обеспечивает хороший механизм выбора, позволяющий ограничить перебор, через который вы должны пройти.

Например:

$ perl -n -e 'print if ( 1000000 .. 2000000)' humongo.txt | less

Это извлечет все из строки 1 млн. В строку 2 млн. И позволит вам отсеять вывод вручную за меньшее время.

Другой пример:

$ perl -n -e 'print if ( /regex one/ .. /regex two/)' humongo.txt | less

Он начинает печатать, когда «регулярное выражение одно» что-то находит, и останавливается, когда «регулярное выражение два» находит конец интересного блока. Может найти несколько блоков. Просеять вывод ...

LogParser

Это еще один полезный инструмент, который вы можете использовать. Процитирую статью из Википедии :

logparser - это гибкая утилита командной строки, которая была изначально написана Габриэле Джузеппини, сотрудником Microsoft, для автоматизации тестов для ведения журнала IIS. Он был предназначен для использования с операционной системой Windows и был включен в набор средств IIS 6.0 Resource Kit. Поведение logparser по умолчанию работает как «конвейер обработки данных», принимая выражение SQL в командной строке и выводя строки, содержащие совпадения для выражения SQL.

Microsoft описывает Logparser как мощный, универсальный инструмент, который обеспечивает универсальный доступ к запросам к текстовым данным, таким как файлы журналов, файлы XML и CSV, а также к ключевым источникам данных в операционной системе Windows, таким как журнал событий, реестр, файловая система и Active Directory. Результаты входного запроса могут быть отформатированы в текстовом выводе или сохранены в более специализированных целях, таких как SQL, SYSLOG или диаграмма.

Пример использования:

C:\>logparser.exe -i:textline -o:tsv "select Index, Text from 'c:\path\to\file.log' where line > 1000 and line < 2000"
C:\>logparser.exe -i:textline -o:tsv "select Index, Text from 'c:\path\to\file.log' where line like '%pattern%'"

Относительность размеров

100 МБ не так уж много. 3 ГБ становится большим. Раньше я работал в отделе печати и почты, который создавал около 2% почты первого класса в США. Одна из систем, в которой я был техническим руководителем, составляла около 15% почтовых отправлений. У нас было несколько больших файлов для отладки здесь и там.

И более...

Не стесняйтесь добавлять больше инструментов и информации здесь. Этот ответ является вики сообщества по причине! Нам всем нужно больше советов по работе с большими объемами данных ...

MultiplyByZer0
источник
8
+1, у меня недавно было несколько действительно огромных XML-файлов (+1 гигабайт), на которые мне нужно было посмотреть. Я нахожусь на Windows, и оба vim, emacs, notepad ++ и несколько других редакторов полностью задохнулись от файла до такой степени, что моя система почти стала непригодной для использования при попытке открыть файл. Через некоторое время я понял, насколько ненужно пытаться открыть файл в -редакторе, когда мне просто нужно его просмотреть. Используя cygwin (и немного умного grep / less / sed-magic), я легко нашел интересующую меня часть и мог читать ее без каких-либо хлопот.
wasatz
8
вам не нужен cygwin за меньшие деньги
ChristophK
2
Этот XML-редактор здесь также имеет большой компонент для просмотра файлов и обеспечивает раскраску синтаксиса и для больших файлов. Файлы не загружаются полностью в память, поэтому документ размером в несколько ГБ не должен быть проблемой. Кроме того, этот инструмент также может проверять эти большие документы XML ... На мой взгляд, один из лучших подходов для работы с огромными данными XML.
Лихтфьюжн
9
ОК, поэтому я просто исправил свою проблему. lessс переносом слов идет медленно. less -Sбез переноса слов молниеносно даже на больших линиях. Я снова счастлив!
Энди Браун
6
Отличный ответ. Хочу отметить, что если у вас установлен Git для Windows, возможно, у вас также есть Git bash, который включает в себя less.
транзистор1