Одно из основных различий между бывший а также СЕПГ является то, что первый (по крайней мере, в реализации 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.