Pular para o conteúdo

Tratamento de arquivo [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Tratamento de arquivo [RESOLVIDO]

Enviado em 13/04/2012 - 14:26h

Tenho um arquivo com um grande conteudo de linhas algo no seguinte formato

JOAO;123;9876;12345;JOSE
JOAO;123;9876;12349;JOSE
JOAO;123;9876;12347;JOSE
JOAQUIM;123;9876;12342;MANOEL
JOAQUIM;123;9876;12341;MANOEL
JOAQUIM;123;9876;12346;MANOEL
MARIA;321;6543;3215;4321;JOAQUINA
MARIA;321;6543;3215;4325;JOAQUINA
MARIA;321;6543;3215;4322;JOAQUINA
BOLA;321;6543;3215;4322;RETANGULO
BOLA;321;6543;3215;4322;TRIANGULO
BOLA;321;6543;3215;4322;QUADRADO
Atualmente tenho um comando que considera o ";" como quebra de campo na linha, gostaria de saber se dependendo do que tenho no primeiro campo eu escolher qual campo quero utilizar. Tipo:

se campo1 = 'joao' ou 'joaquim'; then
cat arquivo.txt mostracampo4
se nao
cat arquivo.txt mostracampo5
fimse
mostrando este resultado:

12345
12349
12347
12342
12341
12346
4321
4325
4322
(juntar todos os qu são iguais)

obrigado!


Responder tópico

2. Re: Tratamento de arquivo [RESOLVIDO]

Melhor resposta

Enviado em 13/04/2012 - 15:54h

Tem muitas maneiras ... aqui segue uma delas

awk -F\; '$1 == "JOAO" || $1 == "JOAQUIM" { print $4 }; $1 != "JOAO" && $1 != "JOAQUIM" { print $5 } ' seu_arquivo | sort | uniq


4. Re: Tratamento de arquivo [RESOLVIDO]

Enviado em 13/04/2012 - 18:06h

Se quiser outra solução com looping e if, segue:


cat arquivo.txt | while read line
do

if [ `echo $line | cut -d";" -f1` == JOAO ] || [ `echo $line | cut -d";" -f1` == JOAQUIM ]; then

echo $line | cut -d";" -f4

else

echo $line | cut -d";" -f5

fi

done

5. Re: Tratamento de arquivo [RESOLVIDO]

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

Dei uma pesquisada e finalizei esta parte dando um cat procurando uma parte caracteristica do arquivo e a partir dai eu direcionava qual campo eu queria e o direcionei para um arquivo temporario depois com um uniq unifiquei os que são os iguais....

Agradeço a todos pelo help!

posteriormente postarei o comando aki!

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder