Script para substituir palavra por caminho. [RESOLVIDO]

1. Script para substituir palavra por caminho. [RESOLVIDO]

Leonardo
moitamore

(usa Debian)

Enviado em 16/06/2017 - 17:39h

Boa tarde pessoal,

Estou com uma duvida, preciso perguntar um diretório para o usuario e em seguida substituir uma palavra em um arquivo X por esta resposta, se fosse apenas palavras é bem tranquilo de se fazer, porem como o diretório possui / não estou conseguindo acertar o sed.

Segue como estou fazendo:


echo "Qual o diretório desejado: (informar caminho completo)"
read resp

sed 's/palavra/\'$resp'/g' /tmp/teste > /tmp/teste_ok


Se a resposta do usuário for um caminho raiz por exemplo "/dados" funciona tranquilo... porem se a resposta é um caminho mais completo (exemplo: "/dados/arquivos/pasta" não consigo fazer a substituição com o sed, me apresenta erros devido as '/' pois creio que entende que esta sendo fechado o sed o que não é o caso.

Alguém sabe como resolver isso? ou consegue me dar uma luz ou forma melhor de se fazer?


  


2. MELHOR RESPOSTA

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 16/06/2017 - 18:17h

moitamore escreveu:
Alguém sabe como resolver isso? ou consegue me dar uma luz ou forma melhor de se fazer?


use vírgulas nesse caso para evitar os múltiplos escapes de barras
#!/bin/bash
echo "Qual o nome do arquivo ?"
read arquivo
sed -i "s,palavra,$arquivo," arquivo.txt




----------------------------------------| Linux Counter #621728 |---------------------------------------
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"
----------------------------------------| Linux Counter #621728 |---------------------------------------


3. Re: Script para substituir palavra por caminho. [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 16/06/2017 - 22:30h



Esta faltando o -i depois do sed.

Ex

sed -i


4. Re: Script para substituir palavra por caminho. [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 16/06/2017 - 23:27h

Se não me engano, teria de ser algo assim:

sed -i "s,palavra,\\$arquivo," arquivo.txt 


Já que $ é caractere especial, precisa ser 'escapado'.
Dupla contrabarra porque ela também precisa ser 'escapada'.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



5. Re: Script para substituir palavra por caminho. [RESOLVIDO]

Leonardo
moitamore

(usa Debian)

Enviado em 23/06/2017 - 00:04h

Deu super certo pessoal. Valeu!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts