shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Ajuda com o "sed" para substituir um determinado trec


From: jimmy
Subject: Re: [shell-script] Ajuda com o "sed" para substituir um determinado trecho de um txt em um arquivo.
Date: Thu, 24 Feb 2011 21:40:23 -0300
User-agent: Mutt/1.4.2.3i

On Wed, Feb 23, 2011 at 05:09:41PM -0000, andelnyr wrote:
> 
> 
> Prezados
> 
> Montei uma giga para testar multimedidores e como tenho de testar um monte de
> equipamentos, eu conecto 5 aparelhos de cada vez na giga e com base em um
> arquivo de configuração eu injeto valores e vejo o funcionamento.
> 
> O arquivo é:
> 
> cat config.txt
> 
> mmed1 1 145 600 590 610 -120 60 0 1 0 1 1 OFF 100
> mmed2 1 144 585 590 595 -10 60 0 1 0 1 1 OFF 110
> mmed3 0 142 320 310 320 -25 59 0 1 0 1 1 OFF 100
> mmed4 1 145 120 121 121 -53 60 0 1 0 1 1 ON 100
> mmed5 0 345 10 9 21 47 60 0 1 0 1 1 ON 101
> 
> Para não ter de ficar mudando isso com editor de textos e salvar, fiz um 
> pequeno
> script para alterar qualquer valor do arquivo em qualquer posição "on the 
> fly" *
> é o altera_config.sh.
> 
> O uso é:
> 
> ./altera_config.sh <nome_do_equipamento> <id_da_coluna> <valor_a_ser_inserido>
> 
> O script é:
> 
> cat altera_config.sh
> 
> #!/bin/bash
> linha=( $(grep $1 config.txt) )
> linha["$2"]="$3"
> sed -i s/"${linha[0]}".*/"${linha[*]}"/g config.txt
> 
> Tudo bem, funciona * mas o script lê uma linha, transforma em vetor, 
> identifica
> o valor a ser modificado e o faz diretamente no arquivo config.txt.
> 
> Mas o que me incomoda é que eu necessariamente não preciso ler uma linha para
> modificar o valor * bastaria modificar o valor na coluna indicada, preservando
> os demais valores e pronto!
> 
> Estou buscando produzir uma linha em sed que fizesse o que proponho, mas só
> consegui chegar até aqui * para alterar o valor referente ao mmed2 na quinta
> coluna para "XXX", eu fiz:
> 
> sed -i 's/(mmed2)(\s[0-9a-zA-Z]{1,3}){4}/\1\2XXX/g' config.txt
> 
> E como poderão perceber, não tive êxito.
> 
> É possível fazer isso somente com o sed? Gostaria de alguma orientação para 
> este
> caso.
Não consegui entender muito bem o que prentendia fazer, mas você não
isolou corretamenta as partes da linha que não sofreriam alterações e
não usou o parâmentro -r do sed para permitir essa sintaxe de regexp
extendida.

> 
> Desde já agradeço.

-- 
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------


reply via email to

[Prev in Thread] Current Thread [Next in Thread]