Я имею в виду размер в 100+ МБ; такие текстовые файлы могут перегружать редакторы.
Мне нужно просмотреть большой XML-файл, но я не могу, если редактор глючит.
Какие есть предложения?
VS Code (Windows, macOS, Linux) - Бесплатная программа с открытым исходным кодом и красивым графическим интерфейсом. Редактируется файл JSON размером 3,6 ГБ, загружается за минуту. У вас должно быть достаточно оперативной памяти для загрузки файлов.
Бесплатные средства просмотра только для чтения:
tail
." Поддерживает следование за файлами, поиск, фильтрацию, настраиваемое выделение, плагины и внешние инструменты.Бесплатные редакторы:
Встроенные программы (установка не требуется):
MORE
, а не Unix more
. Консольная программа, позволяющая просматривать файл по одному экрану за раз.Веб-просмотрщики:
Платные редакторы:
И, наконец, пробовали ли вы открыть большой файл в обычном редакторе? Некоторые редакторы действительно могут работать с достаточно большими файлами. В частности, Notepad++ (Windows) и Sublime Text (Windows, macOS, Linux) поддерживают файлы размером 2 ГБ.
Почему вы используете редакторы, чтобы просто посмотреть на (большой) файл?
Под *nix или Cygwin, просто используйте less. (Есть известная поговорка - "меньше - значит больше, больше или меньше" - потому что "меньше" заменила более раннюю команду Unix "больше", с добавлением возможности прокрутки вверх). Поиск и навигация в less очень похожи на Vim, но здесь нет файла подкачки и используется мало оперативной памяти.
Существует Win32-порт GNU less. См. раздел "less" в ответе выше.
Perl хорош для быстрого написания сценариев, а его оператор ...
(переключение диапазона) служит хорошим механизмом выбора, ограничивающим количество мусора, через который вам придется пробираться.
Например:
$ perl -n -e 'print if ( 1000000 .. 2000000)' humongo.txt | less
Это извлечет все от строки 1 миллион до строки 2 миллион, и позволит вам просеять вывод вручную в less.
Другой пример:
$ perl -n -e 'print if ( /regex one/ .. /regex two/)' humongo.txt | less
Это начинает печатать, когда "регулярное выражение один" находит что-то, и останавливается, когда "регулярное выражение два" находит конец интересного блока. Может быть найдено несколько блоков. Просеять вывод...
Это еще один полезный инструмент, который вы можете использовать. Цитируя статью в Википедии:
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+% почтовых отправлений. У нас было несколько больших файлов, которые нужно было отлаживать то тут, то там.
Не стесняйтесь добавлять сюда другие инструменты и информацию. Этот ответ - вики сообщества не просто так! Нам всем нужно больше советов по работе с большими объемами данных...