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

Publicado por Mauricio Ferrari em 05/05/2020

[ Hits: 3.899 ]

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

Efetuando cálculo de Aspect Ratio de vídeos em C/C++

Como adicionar PPA no Deepin 20

Como Converter uma String em Char Array em C++

Instalando o Nulloy no Deepin 20 ou Debian 9

Fazendo o XTerm iniciar em tela cheia

Leitura recomendada

Três formas de executar HTTP Request em Shell Script

Funções em Shell Script

Desligamento automático para conexão discada

Conversão do catálogo de endereço do Thunderbird para usar no Mutt - Script

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

  

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