--- Em qui, 30/7/09, denis costa <[email protected]> escreveu:
> A solução do jimmy deu erro de > sintaxe, e debugar awk (só por enquanto, espero) vai além > do meu conhecimento!! :( > > já a do Marvin pega o campo do arquivo temporário, mas > quando escreve no arquivo, recria o arquivo apenas com os > campos modificados, vide redirecionamento ">". E o sed > também não é meu amigo... ainda!!! > > o sed não consegue escrever apenas as linhas modificadas > sem redirecionamento???? > > Obrigado pela ajuda > > --- Em qui, 30/7/09, jimmy <[email protected]> > escreveu: > > De: jimmy <[email protected]> > Assunto: Re: [shell-script] arquivo campo-igual-valor > Para: [email protected] > Data: Quinta-feira, 30 de Julho de 2009, 9:13 > > > On Thu, Jul 30, 2009 at 04:00:42AM -0700, denis costa > wrote: > > > > Bom dia a todos > > > Estou desenvolvendo um programa que pega > valores em um arquivo de > > > configuração "temporário", com o > formato campo=valor. > > > > > > campo1=valor1 > > > campo3=valor3 > > > > > > e modifico o valor em um outro arquivo de > configuração, caso o campo > > > exista no arquivo temporário: > > > > > > #antes do programa > > > campo1=valornulo > > > campo2=valorquasenu lo > > > campo3=valorquesumi u > > > campo4=valorcorreto > > > > > > #depois do programa > > > campo1=valor1 > > > campo2=valorquasenu lo > > > campo3=valor3 > > > campo4=valorcorreto > > > > > > E eu já demonstrei aqui na lista que > não domino bem os processadores de > > > texto! ;p > > > Como faço isso com sed ou awk por > exemplo????? ? > > > > > > Desde já abradeço a futura ajuda > > > Abraço > > > > > > ____________ _________ _________ > _________ _________ _________ _ > > > > usando o gnu awk eu faria o seguinte: > > > > $ gawk -F= 'FILENAME==ARGV[ 1]{h[$1]= $2}FILENAME= > =ARGV[2]{ if($1 in h){print $1 FS h[$1]}else{print} }' > temp.txt conf.txt > > > > onde: > > > > $ cat temp.txt > > campo1=valor1 > > campo3=valor3 > > > > $ cat conf.txt > > campo1=valornulo > > campo2=valorquasenu lo > > campo3=valorquesumi u > > campo4=valorcorreto > > > > faça um teste. > > > > -- > > "Não manejo bem as palavras > > Mas manipulo bem as strings." > > ------------ --------- --------- Olá, Denis. Sei que você pediu uma solução com sed/awk, mas se interessar uma abordagem diferente.... sem usar editores, apenas manipulando os arquivos, com um porém: se a variável existir no temp e não no conf, ela é inserida no conf. # cat arqtemp campo1=valor1 campo3=valor3 campo5=valor5 # cat arqconf campo1=valornulo campo2=valorquasenulo campo3=valorquesumiu campo4=valorcorreto # while read REG ; do NOMECAMPO=`echo $REG | cut -f 1 -d =` ; grep -v $NOMECAMPO arqconf > arqconf.tmp ; mv -f arqconf.tmp arqconf ; done < arqtemp # cat arqconf arqtemp | sort > arqconf.new # cat arqconf.new campo1=valor1 campo2=valorquasenulo campo3=valor3 campo4=valorcorreto campo5=valor5 LR :> ____________________________________________________________________________________ Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com
