6

У меня здесь довольно простая проблема: у меня есть фрагмент текста, который представляет собой одну гигантскую большую строку (~ 150 000 символов). Никаких разрывов строк, и это плоский файл фиксированной длины (т.е. он был создан программой COBOL ), поэтому введение разрывов строк не только неудобно, но и бесполезно, если я пытаюсь внести изменения в файл.

Большинство текстовых редакторов борются с единственной такой большой строкой (less не нравится, Gedit это не нравится, nano это не нравится, я слышал, что vim это не нравится и т.д.), Хотя они работают ,

Есть ли у кого-нибудь предложения по редактору, который лучше подходил бы для данных, с которыми я работаю? Это всего лишь одна строка, но она по-прежнему вызывает больше проблем, чем текстовый файл 1 ГБ + со строками нормальной длины ...

Было бы еще лучше, если бы он работал с EBCDIC а не с barf, когда он встречает нулевые байты, или искажал их при обратной записи (некоторые поля являются двоичными числами в десятичном формате).

Обратите внимание, что речь идет не о файлах, которые являются большими с точки зрения исходного размера - файл содержит только одну строку - но о том, что большинство редакторов не оптимизированы для работы с очень длинными строками.

4 ответа4

5

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

Вы можете атаковать его с помощью шестнадцатеричного редактора, но это не поможет вам с частью EBCIDC.

Если вам нужно много редактировать этот файл и вы хорошо знакомы с его форматом записи фиксированной длины, возможно, вам стоит потратить время на то, чтобы что-то записать на Perl или другом языке (я предлагаю Perl, потому что он старый и очень есть модули, которые конвертируют UTF-8 и т. д. в EBCIDC), которые будут работать с конкретным форматом этого файла.

5

Я просто попробовал vim для файла с одной строкой из 150000 символов, и он работал гладко, как шелк.

Так что, думаю, вам стоит попробовать, если вы не только потому, you heard vim doesn't like such kind of files .

Вот как я получил свой файл:

seq 150000 | while read num; do echo -n "b" ; done > megaline.txt
3

Я попробовал тот же метод, что и Dakatine, с моей установкой emacs, и он работал нормально. Никаких зависаний, ничего. Если вы редактируете простой текст (то есть не проводите никакого анализа, который требуется для режима программирования в text-mode), будет очень сложно заблокировать emacs. Поведение, которое вы наблюдаете в Eclipse, вероятно, отражает тот факт, что Eclipse пытается провести какой-то анализ текста в том виде, в котором он представлен - то же самое для Gedit. Я также не могу воспроизвести вашу проблему с less - это хорошо для меня.

1

Попробуйте: JEdit - редактор-программист

Он имеет некоторые расширенные функции буферизации и высоко оптимизированный ввод-вывод, но требует времени для запуска (из-за JVM). Я использую его для просмотра и редактирования более 1 ГБ файлов без каких-либо проблем - по крайней мере, в Debian. Я не могу гарантировать, что он будет вести себя так же хорошо на окнах, хотя ... :)

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