Trocar valores [RESOLVIDO]

13. Re: Trocar valores [RESOLVIDO]

Erick Castilho Tadei
spawnlecastilho

(usa Debian)

Enviado em 11/07/2012 - 13:20h

então ele somente copiou os arquivos.
o que eu realmente preciso e não consigo fazer é o arquivo1 tem muitas linhas e tem algum campo a mais

o precisa é manter o arquivo1 todos os campos mas onde esta com UNKNOW subistituir pela informação que esta no arquivo2

Preciso substituir os campus SONG NAME,CP,PRICE,ARTIST,ISRC e UPC do arquivo1 pelos registros contidos nos mesmos campos do arquivo2, baseado pelo clip_id.

aqui eu fiz o teste e o script cria um arquivo4 onde deveria conter as informações certo. mas ele esta ficando menor que o arquivo1




  


14. Re: Trocar valores [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 11/07/2012 - 13:35h

Você já olhou em arquivo3.csv?

[[ "${id_arq2// /}" != "" ]]  && sed 's/\b'"$id_arq2"'\b\,.*$/'"$arq2"'/g' -i arquivo3.csv 


É nele que o comando "sed" faz as substituições.

sed 's/\b'"$id_arq2"'\b\,.*$/'"$arq2"'/g' -i arquivo3.csv 


Ele é uma cópia de arquivo1.csv. Lembra?

sed "1 d;s/\r//g" arquivo1.csv | sort -n -t , --key=5 > arquivo3.csv 


É para arquivo1.csv ficar intacto em caso de imprevisto. É nele em que foram feitas as substituições.


15. Re: Trocar valores [RESOLVIDO]

Erick Castilho Tadei
spawnlecastilho

(usa Debian)

Enviado em 11/07/2012 - 14:10h

então lembro sim, mas o meu arquivo3 ficou tinha ficado em branco por que estava testando em outro server.

acabei de testar e o arquivo3 ficou assim

20120502,101135,64,6499770219,-3,UNKNOWN,UNKNOWN,2.99,UNKNOWN,NULL,NULL
20120502,114003,66,6696147669,-3,UNKNOWN,UNKNOWN,2.99,UNKNOWN,NULL,NULL
20120502,141751,62,6299099072,-3,UNKNOWN,UNKNOWN,2.99,UNKNOWN,NULL,NULL
20120502,150443,62,6299696416,-3,UNKNOWN,UNKNOWN,3.99,UNKNOWN,NULL,NULL
20120502,164841,14,1496130922,-3,UNKNOWN,UNKNOWN,2.99,UNKNOWN,NULL,NULL
20120502,174555,38,3899959568,-3,UNKNOWN,UNKNOWN,2.99,UNKNOWN,NULL,NULL
20120502,192611,55,5599093164,-3,UNKNOWN,UNKNOWN,2.99,UNKNOWN,NULL,NULL



16. Re: Trocar valores [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 11/07/2012 - 15:53h

O outro arquivo possui chave com o valor de "-3":

-3,UNKNOWN,UNKNOWN,2.99,#N/A,,
-3,UNKNOWN,UNKNOWN,3.99,#N/A,,
999,UNKNOWN,UNKNOWN,2.99,#N/A,,
2008,UNKNOWN,UNKNOWN,2.99,UNKNOWN,,


Ele já veio assim.

Apenas substituiu o "-3" de um no outro.

Como já tinham "UNKNOWN" o valor persistiu.


17. Re: Trocar valores [RESOLVIDO]

Erick Castilho Tadei
spawnlecastilho

(usa Debian)

Enviado em 11/07/2012 - 16:48h

puts entendi agora.

mas o que eu realmente preciso é subistituir o unknow pelo valor correto

exemplo

arquivo1 contem esse registro

20120505,205209,96,9691265560,2464424,NADA TERMINA,SONY-BRAZIL,3.99,UNKNOWN,UNKNOWN,UNKNOWN

e arquivo2 tem esse valor com o mesmo id

2464424,NADA TERMINA,SONY-BRAZIL,3.99,High School Musical,BRSME0800187,3868441


que na verdade no arquivo1 chama ID e no arquivo2 chama Clip_ID

ai o que eu quero é que fique assim de acordo com o ID


20120505,205209,96,9691265560,2464424,NADA TERMINA,SONY-BRAZIL,3.99,High School Musical,BRSME0800187,3868441


ou seja subistituir os Unknow pelo valor do arquivo2.


o que eu posso fazer tambem para aproveitar o que voce fez é retirar tudo que tem Unknow e rodar seu script
pois assim os campos ficaram em branco.



18. Re: Trocar valores [RESOLVIDO]

Erick Castilho Tadei
spawnlecastilho

(usa Debian)

Enviado em 11/07/2012 - 23:57h

Fla meu brother, muito obrigado mesmo pela ajuda e resolveu, estou colocando aqui como ficou o codigo deixando o arquivo3.cvs exatamente como eu precisava.

muito obrigado pelo seu tempo mesmo

#!/bin/bash

sed "1 d;s/\r//g" arquivo1.csv | sort -n -t , --key=5 > arquivo3.csv

sed "1 d;s/\r//g" arquivo2.csv | sort -n -t , --key=1 > arquivo4.csv


head -1 arquivo1.csv > head0001.tmp

cat arquivo3.csv >> head0001.tmp

mv head0001.tmp arquivo3.csv

while read arq2; do

sed "/UNKNOWN/d" -i arquivo3.csv

id_arq2=$(echo $arq2 | cut -d',' -f1);



arq2="${arq2//\//\\/}"

arq2="${arq2//&/\\&}"


[[ "${id_arq2// /}" != "" ]] && sed 's/\b'"$id_arq2"'\b\,.*$/'"$arq2"'/g' -i arquivo3.csv



done < arquivo4.csv;



19. Re: Trocar valores [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 12/07/2012 - 00:09h

BLZ!!!

Qualquer coisa é só deixar um recado aqui mesmo ou abrir outro tópico.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts