Você normalmente deseja usar -e
(possivelmente junto com -f
) quando quiser passar mais de uma expressão como sed
code.
As expressões dadas após -e
e o conteúdo dos arquivos fornecidos após -f
são concatenados (com novas linhas) para formar o script sed
. Quando você deseja transmitir apenas uma expressão literal, pode omitir o -e
e passar essa expressão como o primeiro argumento não opcional para sed
.
sed -e s/foo/bar/ -f file.sed -e 'a\' -e foo
é o mesmo que fazer:
sed 's/foo/bar/
content of file.sed
a\
foo'
Como há locais (como após os comandos w
/ r
/ #
e mais, dependendo das implementações), em que você não pode usar ;
para separar comandos e outros em que você precisa newline (como esse a
acima), usar vários -e
s é uma maneira de manter o comando sed
em uma linha (útil para shells como csh
que tornam difícil inserir comandos de várias linhas ou shells como ksh
, que faz com que seja difícil editá-los
No caso de:
sed 's/foo/bar/g'
vs
sed -e 's/foo/bar/g'
Isso não faz diferença alguma.