Uma grande diferença entre ex e sed é que o primeiro (pelo menos na implementação do Vim) lê o arquivo inteiro em um buffer e opera sobre isso. Considerando que o "s" in sed significa streaming , ou seja, sed lê o (s) arquivo (s) de entrada linha a linha e o exibe em movimento. Portanto, o sed lida facilmente com arquivos muito grandes, enquanto o ex / Vim precisará do espaço de endereço virtual do seu sistema operacional e será consideravelmente mais lento na leitura e gravação.
Então, com sed, se você precisa manter um contexto a partir de linhas anteriores, você tem que juntá-lo explicitamente com o espaço padrão , ou armazená-lo no único espaço disponível . Considerando que, no ex / Vim, você pode navegar de volta para uma linha anterior ou usar expressões regulares que abrangem várias linhas no buffer. Além disso, não existe apenas um espaço de espera , mas vários registros nomeados no Vim (chamados buffers nomeados em ex). Então, se um único espaço de armazenamento não é suficiente, você tem que atualizar de sed para awk (para manter o aspecto de streaming), ou mudar para ex / Vim.
Na prática
Se eu já tenho um arquivo aberto no Vim, eu naturalmente uso modo ex para certas manipulações de texto. :substitute
é um dos comandos mais usados (pelo menos para mim). Muitos ex-comandos possuem uma implementação (em geral recursiva) macro correspondente; dependendo da tarefa (e preferências pessoais / habilidades), você tende a usar um ou outro com mais frequência.
Para tarefas de automação, eu prefiro a cadeia de ferramentas sed
/ awk
/ Perl
; O bom aqui é que você pode começar pequeno (com sed), e uma vez que você alcance os limites de suas capacidades, você pode facilmente migrar para a próxima ferramenta, que é mais poderosa (mas também mais complexa e maior). Se esta é uma tarefa de automação única, e eu já conheço uma macro bacana ou um plugin Vim que simplifica muito a implementação, considero usar o Vim como um utilitário de linha de comando não interativo em modo ex silencioso . Para outras tarefas, isso geralmente não é uma opção por causa das dependências (para o Vim, o plugin, minha configuração pessoal).
Resumo
Você pode fazer muitas coisas com apenas sed e nada mais. Se você não é um usuário do Vim (especialmente se você usa o editor outro , e pode fazer processamento de texto poderoso lá), ex (modo) não é tão importante, mas nunca está longe, como sua sintaxe está estreitamente alinhado com o sed, de qualquer forma.