Comando "sed" com parâmetro que aceita barra " / "

Publicado por Mauricio Ferrari em 05/05/2020

[ Hits: 3.996 ]

Blog: https://www.youtube.com/@LinuxDicasPro

 


Comando "sed" com parâmetro que aceita barra " / "



Essa dica é uma sugestão que eu encontrei e testei para solucionar o problema de inserir linhas em um documento usando o comando sed. Vou dar um exemplo de um comando que iria falhar:

sed -i -e "s/ usr/home/BAK / usr/home/backup /g" teste

Não tem como funcionar. Por isso, optei por outra solução. Vamos começar.

Crie um arquivo com o nome de test e depois, em um terminal, teste esse comando:

sed -i '4i session.save_path = /home/userftp/tmp' test

Ao conferir, nada aconteceu, pois para o comando funcionar as linhas devem existir. Aqui o 4i diz para o sed adicionar o texto na linha 4, mas como não tem linha nenhuma, ele não faz nada.

Então, vamos fazer assim:

echo -e " um \n dois \n tres \n quatro \n cinco" >> test
$ cat test

um
dois
tres
quatro
cinco


Agora vamos testar:

sed -i '4i session.save_path = /home/userftp/tmp' test
$ cat test

um
dois
tres
session.save_path = /home/userftp/tmp
quatro
cinco


Como pode ser visto, o texto foi inserido na linha 4 empurrando todo o resto do conteúdo para baixo. Assim, você tem a possibilidade de inserir barras nos textos usando o sed.

Fica a dica.

Outras dicas deste autor

Executando um Programa Externo sem Impedir o Funcionamento do Programa em Python

Grub não detecta outras partições após a atualização do Slackware [Resolvido]

Instalando o Genymotion no Slackware

Wi-Fi pedindo senha sempre que o Deepin 20 inicia [Resolvido]

Enumerando linhas com o comando nl

Leitura recomendada

Capturando os últimos artigos do VivaoLinux

Reexecutando comandos do console

Funções em Shell Script

Diferenciar usuários no Squid

Resolvendo problema com scripts que estão rodando no crontab

  

Comentários
[1] Comentário enviado por maurixnovatrento em 06/05/2020 - 13:45h


Se alguém também tiver alternativas pode complementar aqui.

___________________________________
Conhecimento não se Leva para o Túmulo.

[2] Comentário enviado por msoliver em 06/05/2020 - 17:14h

Boa tarde Mauricio123.
No caso de "/" no "padrão",
As opções que utilizo, são:
[b]Escapar as "/":[/b]
Ex.:
[code]
sed 's/\/media\/adminq\/persistence\/BACKUP\/BKP_SERVER\/CONF/ALTERADO\/AGORA\//' texto.txt
/media/adminq/persistence/BACKUP
/media/adminq/persistence/BACKUP/APPS
/media/adminq/persistence/BACKUP/BKP_SERVER
ALTERADO/AGORA/
/media/adminq/persistence/BACKUP/BKP_SERVER/mysql
/media/adminq/persistence/BACKUP/BKP_SERVER/www[/code]
Ou, [b]utilizar um "delimitador" diferente de "/"[/b]:
[code]
sed 's|/media/adminq/persistence/BACKUP/BKP_SERVER/CONF|ALTERADO/AGORA/|' texto.txt
/media/adminq/persistence/BACKUP
/media/adminq/persistence/BACKUP/APPS
/media/adminq/persistence/BACKUP/BKP_SERVER
ALTERADO/AGORA/
/media/adminq/persistence/BACKUP/BKP_SERVER/mysql
/media/adminq/persistence/BACKUP/BKP_SERVER/www
[/code]
[code]
cat texto.txt
/media/adminq/persistence/BACKUP
/media/adminq/persistence/BACKUP/APPS
/media/adminq/persistence/BACKUP/BKP_SERVER
/media/adminq/persistence/BACKUP/BKP_SERVER/CONF
/media/adminq/persistence/BACKUP/BKP_SERVER/mysql
/media/adminq/persistence/BACKUP/BKP_SERVER/www
[/code]
_________________
Att.: Marcelo Oliver
_________________

[3] Comentário enviado por msoliver em 06/05/2020 - 17:17h


[2] Comentário enviado por msoliver em 06/05/2020 - 17:14h

Boa tarde Mauricio123.
No caso de "/" no "padrão",
As opções que utilizo, são:
[b]Escapar as "/":[/b]
Ex.:
[code]
sed 's/\/media\/adminq\/persistence\/BACKUP\/BKP_SERVER\/CONF/ALTERADO\/AGORA\//' texto.txt
/media/adminq/persistence/BACKUP
/media/adminq/persistence/BACKUP/APPS
/media/adminq/persistence/BACKUP/BKP_SERVER
ALTERADO/AGORA/
/media/adminq/persistence/BACKUP/BKP_SERVER/mysql
/media/adminq/persistence/BACKUP/BKP_SERVER/www[/code]
Ou, [b]utilizar um "delimitador" diferente de "/"[/b]:
[code]
sed 's|/media/adminq/persistence/BACKUP/BKP_SERVER/CONF|ALTERADO/AGORA/|' texto.txt
/media/adminq/persistence/BACKUP
/media/adminq/persistence/BACKUP/APPS
/media/adminq/persistence/BACKUP/BKP_SERVER
ALTERADO/AGORA/
/media/adminq/persistence/BACKUP/BKP_SERVER/mysql
/media/adminq/persistence/BACKUP/BKP_SERVER/www
[/code]
[code]
cat texto.txt
/media/adminq/persistence/BACKUP
/media/adminq/persistence/BACKUP/APPS
/media/adminq/persistence/BACKUP/BKP_SERVER
/media/adminq/persistence/BACKUP/BKP_SERVER/CONF
/media/adminq/persistence/BACKUP/BKP_SERVER/mysql
/media/adminq/persistence/BACKUP/BKP_SERVER/www
[/code]
_________________
Att.: Marcelo Oliver
_________________



[4] Comentário enviado por maurixnovatrento em 13/05/2020 - 22:06h


Bom complemento. Esse sed merece um artigo só para ele. Se bem que já deve ter bastante coisa sobre ele aqui no VoL.

___________________________________
Conhecimento não se Leva para o Túmulo.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts