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

Publicado por Mauricio Ferrari (LinuxProativo) em 05/05/2020

[ Hits: 4.422 ]

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

 


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

Sem Itens Repetidos no bash_history

Executando um Comando ou Programa como Outro Usuário

Preparando a VM para virtualização do Mac OSX no VirtualBox

UMPlayer reformulado para o Linux Mint 20

Sed - duplicando linhas

Leitura recomendada

Como fazer o Linux ignorar um ping

Backup da pasta de usuário sem copiar os arquivos ocultos

Como excluir um determinado kernel no Ubuntu

Como somar todos os números contidos num arquivo texto

Lendo setas do teclado em shell script

  

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