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

Publicado por Mauricio Ferrari em 05/05/2020

[ Hits: 3.434 ]

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

deb2appimage - Crie AppImage facilmente

Executando um Comando ou Programa como Outro Usuário

Função para Abrir uma Interface do tkinter no Centro da Tela em Python

Usando Vídeo Wallpaper no KDE

OpenArena que funciona no Linux Mint 20

Leitura recomendada

Ocultando a versão do seu BIND

Desligar o PC após concluir download (Chrome e Chromium)

Como fazer o Linux ignorar um ping

Desligamento automático para conexão discada

Criando e utilizando uma "biblioteca de funções"

  

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