Ex / vim ex-mode и sed категорически разные утилиты или две разные программы для одних и тех же задач


0

Я понимаю, что sed (потоковый редактор) - это неинтерактивный редактор, который полезен для сценариев и пакетной обработки. Я также понимаю, что ex и vim вызывают: ex-mode - линейные редакторы для неинтерактивной обработки текста. У меня вопрос не о том, что лучше или полезнее, а о том, есть ли какой-то предполагаемый вариант использования или преимущество ex / ex-mode, которое отличает его от sed. Причина, по которой я спрашиваю, состоит в том, чтобы определить, пропускаю ли я, игнорируя экс-режим в пользу sed. Заранее спасибо.

Ответы:


1

Одно из основных различий между бывший а также СЕПГ является то, что первый (по крайней мере, в реализации Vim) читает весь файл в буфер и действует на этом. Принимая во внимание, что "s" в седе означает потоковый , т.е. sed читает входной файл (ы) построчно и выводит его на ходу. Поэтому sed легко обрабатывает очень большие файлы, тогда как ex / Vim потребуется виртуальное адресное пространство вашей операционной системы и будет значительно медленнее читать и писать.

Итак, с помощью sed, если вам нужно сохранить контекст из предыдущих строк, вы должны явно присоединить его к пространство образца или сохраните его в единственном доступном удерживать пространство , В то время как в ex / Vim вы можете вернуться к предыдущей строке или использовать регулярные выражения, которые занимают несколько строк в буфере. Кроме того, есть не только один удерживать пространство , но несколько именованные регистры в Vim (называется именованные буферы в бывшем). Итак, если одного места для хранения недостаточно, вам нужно перейти с sed на AWK (для поддержки потоковой передачи) или переключитесь на ex / Vim.

На практике

Если у меня уже есть файл, открытый в Vim, я, естественно, использую бывший режим для определенных текстовых манипуляций. :substitute это одна из наиболее часто используемых команд (по крайней мере, для меня). Многие команды ex имеют соответствующие (часто рекурсивные) макрос реализация; в зависимости от задачи (и личных предпочтений / способностей), вы склонны чаще использовать одно или другое.

Для задач автоматизации я предпочитаю sed / awk / Perl цепочка инструментов; Здесь хорошо то, что вы можете начать с малого (с помощью sed), и как только вы достигнете пределов его возможностей, вы можете довольно легко перейти к следующему инструменту, который является более мощным (но также более сложным и большим). Если это одноразовая задача автоматизации, и я уже знаю об изящном макросе или плагине Vim, который значительно упрощает реализацию, я рассматриваю использование Vim в качестве неинтерактивной утилиты командной строки в бесшумный экс-режим , Для других задач это обычно не вариант из-за зависимостей (для Vim, плагина, моей личной конфигурации).

Резюме

Вы можете делать много всего с помощью sed, и ничего больше. Если вы не являетесь пользователем Vim (особенно если вы используете Другой редактор, и может выполнять мощную обработку текста там), ex (mode) не так важен, но никогда не далеко, так как его синтаксис в любом случае тесно связан с sed.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.