Sed - como salvar alterações no arquivo
Dica publicada em Shell Script / Expressões Regulares
Sed - como salvar alterações no arquivo
Simples dica de como usar o sed para gravar as alterações no próprio arquivo.
Abaixo um exemplo comum de uso do sed, temos um arquivo chamado "frase.txt" com o seguinte conteúdo:
Queremos usar o sed para trocar Windows por Linux:
sed 's/Windows/Linux/' frase.txt
Viva o Linux!
Embora o resultado do comando seja o desejado, se conferirmos o conteúdo do arquivo frase.txt ainda temos o original:
cat frase.txt
Viva o Windows!
Para fazer o sed gravar as alterações basta acrescentar o argumento "-i":
sed -i 's/Windows/Linux/' frase.txt
Viva o Linux!
Agora sim o arquivo foi salvo!
E podemos fazer ainda melhor, que é salvar as alterações no arquivo e de quebra gerar um arquivo de backup. O argumento -i pode ser acompanhado de um sufixo de arquivo de backup, como por exemplo .bak ou .old, ou qualquer outro sufixo de sua escolha.
sed -i.bak 's/Windows/Linux/' frase.txt
Após a execução do comando acima teremos um novo arquivo frase.txt e a cópia do original chamado frase.txt.bak.
IMPORTANTE: certifique-se sempre de usar um sufixo de backup quando tiver usando o "-i", se você cometer algum erro na expressão usada no sed, não haverá como desfazer o comando e restaurar o arquivo original sem uma cópia de backup.
Abaixo um exemplo comum de uso do sed, temos um arquivo chamado "frase.txt" com o seguinte conteúdo:
Viva o Windows!
Queremos usar o sed para trocar Windows por Linux:
sed 's/Windows/Linux/' frase.txt
Viva o Linux!
Embora o resultado do comando seja o desejado, se conferirmos o conteúdo do arquivo frase.txt ainda temos o original:
cat frase.txt
Viva o Windows!
Para fazer o sed gravar as alterações basta acrescentar o argumento "-i":
sed -i 's/Windows/Linux/' frase.txt
Viva o Linux!
Agora sim o arquivo foi salvo!
E podemos fazer ainda melhor, que é salvar as alterações no arquivo e de quebra gerar um arquivo de backup. O argumento -i pode ser acompanhado de um sufixo de arquivo de backup, como por exemplo .bak ou .old, ou qualquer outro sufixo de sua escolha.
sed -i.bak 's/Windows/Linux/' frase.txt
Após a execução do comando acima teremos um novo arquivo frase.txt e a cópia do original chamado frase.txt.bak.
IMPORTANTE: certifique-se sempre de usar um sufixo de backup quando tiver usando o "-i", se você cometer algum erro na expressão usada no sed, não haverá como desfazer o comando e restaurar o arquivo original sem uma cópia de backup.
É um comando que eu gosto bastante.
___________________________________
Conhecimento não se Leva para o Túmulo.