Respostas:
Eu acho que você está procurando -i:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
Por exemplo:
$ cat foo.txt
hello world
$ sed -i 's/o/X/g' foo.txt
$ cat foo.txt
hellX wXrld
Se você fornecer um sufixo, ele criará um arquivo de backup:
$ ls
foo.txt
$ sed -i.bak 's/o/X/g' foo.txt
$ ls
foo.txt foo.txt.bak
O arquivo de entrada é modificado e um backup contendo os dados do arquivo original é criado.
Observe também que este é para o GNU sed, existem pequenas diferenças no formato entre diferentes sedimplementações.
sednão faz edição no local. Ele cria um novo arquivo e sobrescreve o antigo, o inode muda.
{ rm file; cmd > file; } < filelevaria à conclusão de que o cmd lê e grava no mesmo arquivo, o que não acontece. São dois arquivos distintos que, por acaso, têm o mesmo nome. Mas não quero iniciar uma discussão aqui.
sed: 1: "foo.txt": invalid command code fao executar sed -i 's/o/X/g' foo.txt. No entanto, fornecer uma extensão, como sed -i .bak 's/o/X/g' foo.txtfunciona bem. Alguma idéia de como fazê-lo funcionar sem criar arquivos de backup?
sed -i '' 's/o/X/g' foo.txt
Esta solução funciona para HPUX (UNIX):
1
{ rm test1.sh && awk '{gsub("Error", "NO_Error", $0); print}' > test1.sh; } < test1.sh.:
2)
perl -pi -e 's/Error/NO_Error/g' test1.sh
3)
sed 's/Error/NO_Error/g' test1.sh | tee test1.sh
-eopção é para executar vários sedcomandos
sed -e 's/linux/unix/' -e 's/os/OS/' file.txt
considere file.txtcomo
linux os
então O / P é
unix os
-i opção salva as alterações permanentemente ...
-ebandeira significa expressão. Você provavelmente vai querer a-ibandeira de que meiosin-placee eu recomendo fortemente que você usesed -i.bak 's/../' filename