Substiuir uma palavra especifica em um arquivo de texto [RESOLVIDO]

1. Substiuir uma palavra especifica em um arquivo de texto [RESOLVIDO]

Guilherme Martins
guilgordo

(usa Linux Mint)

Enviado em 05/01/2016 - 16:47h

Bem eu tenho um arquivo de texto que esta configurado da seguinte forma:

temperatura = valor
presão = valor
volume = valor
;
Bem eu queria substituir os numeros que estão inceridos onde esta escrito valor por outros numeros.
Tambem gostaria de saber se é possivel fazer isso em cadeia, tipo, eu falo 200, 300 e 400, dai ele vem altera o arquivo de texto
e cria um arquivo com temperaturo 200 outro 300 e outro 400.




  


2. MELHOR RESPOSTA

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 12/01/2016 - 17:41h

guilgordo escreveu:

Novamente muito obrigado, ajudou muito cara, muito mesmo


Estamos aqui pra ajudar!

Não esqueça de marcar como resolvido.

abs,


---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---

3. Re: Substiuir uma palavra especifica em um arquivo de texto

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 05/01/2016 - 20:10h

Olá,

Vamos chamar o arquivo que contém os dados de dados.txt, ok?

sed -ri '/temperatura/ s/=.*/= 500/g' dados.txt  


Para passar os valore como parâmetro, sugiro criar um script. No exemplo abaixo, vc deve executar o script e passar os parametros na ordem:
Primeiro o nome do arquivo que contem os dados, depois o valor da temperatura, depois o valor da pressão e depois o valor do volume. EX:
./script.sh dados.txt 500 400 300  

#!/bin/bash

sed -ri "/temperatura/ s/=.*/= $2/g" $1
sed -ri "/pressao/ s/=.*/= $3/g" $1
sed -ri "/volume/ s/=.*/= $4/g" $1


OBS1: Evite usar acentos, no script usei sem acento ( e pressao com dois s)

OBS2: Não esqueça de dar permissão de execução:
chmod +x script.sh 


abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


4. Re: Substiuir uma palavra especifica em um arquivo de texto [RESOLVIDO]

Guilherme Martins
guilgordo

(usa Linux Mint)

Enviado em 06/01/2016 - 15:45h

Cara muito obrigado pela ajuda, funcional certinho,
você poderia me falar como funciona o codigo que você me enviou?



5. Re: Substiuir uma palavra especifica em um arquivo de texto

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 06/01/2016 - 18:43h

guilgordo escreveu:

Cara muito obrigado pela ajuda, funcional certinho,
você poderia me falar como funciona o codigo que você me enviou?


Olá,

Claro!

Vamos lá:

#!/bin/bash >>>> Aqui vc esta indicando pro sistema qual interpretador usar, no caso, o BASH

sed -ri "/temperatura/ s/=.*/= $2/g" $1
sed -ri "/pressao/ s/=.*/= $3/g" $1
sed -ri "/volume/ s/=.*/= $4/g" $1

Vou dividir o comando utilizado acima (SED) pra ficar melhor. Não vou entrar nos detalhes, mas acho que conseguirá entender.
sed -ri "/temperatura/ s/=.*/= $2/g" $1 

A sintaxe do que utilizei foi sed -ri "/linhas com a palavra ou frase procurada/ substituir/isso/por_aquilo/" em todas as ocorrenicas encontradas.

sed -ri : o parâmetro -r diz ao sed para ativar o recurso de expressões regulares extensivo , o parâmetro -i diz ao sed para realizar as alterações diretamente no arquivo e não só mostrar na tela.
$1, $2, $3 etc.. são parâmetros posicionais, ou seja, a ordem dos parametros (Primeiro parâmetro, Segundo parâmetro e etc..)
Então resumidamente seria assim:

Sed, nas linhas em que contem a palavra temperatura, faça o seguinte:
substitua isso: =.* ( essa expressão regulçar significa todos os caracteres do sinal de igual até o fim da linha)
Por isso: = $2 ( parâmetro posicional numero 2, ou seja, o segundo parâmetro digitado por vc na linha de comando)
No arquivo: $1 ( parâmetro posicional numero 1, ou seja, o primeiro parâmetro digitado por vc na linha de comando)

OBS IMPORTANTE: Repare que usei aspas duplas nesse comando, pois do contrário o sed interpretaria o $ como fim de linha)


---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---



6. RES: Substiuir uma palavra especifica em um arquivo de texto

marcio mendes mendes
conectadohost

(usa XUbuntu)

Enviado em 06/01/2016 - 19:25h

Olá,
essa eu sabia que o amigo tonyhts ia resolver o cara manja dos comandos sed
aproveitando vou salvar pra mim esse tópico certamente irei precisar algum dia.kkk

---> A arte de programar consiste na arte de organizar e dominar a complexidade.
---> Dijkstra <---


7. Re: Substiuir uma palavra especifica em um arquivo de texto

Guilherme Martins
guilgordo

(usa Linux Mint)

Enviado em 11/01/2016 - 15:41h

Novamente muito obrigado, ajudou muito cara, muito mesmo






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts