Estou tentando substituir várias palavras no arquivo usando sed -i #expression1 #expression2
Arquivo
Something 123 item1
Something 456 item2
Something 768 item3
Something 353 item4
Saída (desejada)
anything 123 stuff1
anything 456 stuff2
anything 768 stuff3
anything 353 stuff4
Experiências
Posso obter a seguinte saída usando sed -i
2 vezes.
sed -i 's/Some/any/g' file
sed -i 's/item/stuff/g' file
Posso ter alguma maneira possível de fazer isso como um único comando no local, como
sed -i 's/Some/any/g' -i 's/item/stuff/g' file
Quando tentei o código acima, ele toma s/item/stuff/g
como arquivo e tenta trabalhar nele.
shell
shell-script
text-processing
sed
JigarGandhi
fonte
fonte
sed - i 's/Some\(.*\)item/any\1stuff/' file
Respostas:
Dependendo da versão do
sed
seu sistema, você poderá fazerVocê não precisa da
g
barra final após os
comando aqui, pois está fazendo apenas uma substituição por linha.Alternativamente:
A
-i
opção dizsed
para editar arquivos no local; se houver caracteres imediatamente após o arquivo,-i
elesed
fará um backup do arquivo original e os usará como extensão do arquivo de backup. Por exemplo,ou
será modificado
file
, salvando o original emfile.bak
.Obviamente, em um sistema Unix (ou semelhante ao Unix), normalmente usamos '~' em vez de '.bak', então
fonte
-i
. Então,sed -i '' 's/a/b/;s/c/d/' file
oused -i .back 's/a/b/;s/c/d/'
oused -i.back 's/a/b/;s/c/d/'
não. Outrassed
implementações geralmente não suportam-i
.-i
a extensão e a extensão.sed -i 's/$username = "root"/$username = "newuser"/; s/$password = "password"/$password = "passwd"/; s/$dbname="handicraftstore"/$dbname="handicraft"' Web/database.php
resultadossed: -e expression #1, char 141: unterminated
s'comando`s
comando está faltando no final/
.Você pode encadear expressões sed junto com ";"
fonte
Expressão múltipla usando várias
-e
opções:ou você pode usar apenas um:
Você deve fornecer uma extensão para o arquivo de backup, pois quando alguma implementação de
sed
, como OSX sed , não funcionar com extensão vazia (você devesed -i ''
substituir os arquivos originais).fonte
Você pode usar o Vim no modo Ex:
%
selecione todas as linhass
substitutox
salvar e fecharfonte