
Isso é possível? Li em algum lugar que o seguinte comando faria isso:
sed -e [comando] [arquivo]
mas parecia fazer a mesma coisa que apenas
sed [comando] [arquivo]
(não salvou as alterações). Existe alguma maneira de fazer isso usando sed?
Responder1
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, um arquivo de backup será criado:
$ 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 isso é para GNUsed
, existempequenas diferençasno formato entre diferentes sed
implementações.
Responder2
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
Responder3
-e
opção é para executar vários sed
comandos
sed -e 's/linux/unix/' -e 's/os/OS/' file.txt
considere file.txt
como
linux os
então O/P é
unix os
-i
opção salva as alterações permanentemente...