Estou tentando usar o sed para editar um arquivo de configuração. Gostaria de mudar algumas linhas. Eu sei que no Linux sed -i
permite edições no local, mas requer que você salve em um arquivo de backup. No entanto, gostaria de evitar vários arquivos de backup e fazer todas as alterações no local de uma só vez.
Existe uma maneira de fazer isso sed -i
ou existe uma alternativa melhor?
a
são transformadasb
e, em seguida, todas as instâncias deb
são transformadas emd
. Você poderia fazer a mesma coisa comsed -i -e 's/a\|b/d/g' file
Vire todas as instâncias de um ou outroa
oub
emd
.Outra alternativa é
ex
, o antecessor devi
. Na verdade, é a ferramenta POSIX escolhida para edição de arquivos com script no local; é extraordinariamente mais flexívelsed -i
e, sem dúvida, ainda mais portátil que o Perl. (Se você ficar fora do mundo do Windows, é indiscutivelmente mais portátil que o Perl.)Há uma relativa escassez nessa troca de pilha de comandos de exemplo usando
ex
, pelo menos em comparação com a infinidade de comandos de exemplo usandosed
,awk
e Perl. No entanto, eu mesmo mergulhei bastante nas especificaçõesex
do POSIX e tenho batido o tambor desde então. Escrevi muitas respostas usandoex
aqui e no stackexchange do vi / Vim:Leitura adicional:
fonte
Além de usar várias
-e
opções, você também pode separar os comandos sed em um único script sed usando novas linhas ou ponto e vírgula.Este é o caso, se esse script for uma linha na linha de comando ou um arquivo de script.
por exemplo
Os caracteres de espaço ao redor do
;
são opcionais. Usei-os aqui para garantir que o ponto-e-vírgula se destaque (em geral, exceto para novas linhas que separam comandos, o espaço em branco entre os comandos é ignorado ... mas não esqueça que o espaço em branco nos comandos pode ser e geralmente é significativo).ou:
fonte