Uma segunda solução.. mas sem usar o uniq...

[EMAIL PROTECTED]:~]# cat txt
001;João Silva;12345678900;Rua x
002;João Francisco Silva;12345678900;Rua z
003;José;98765432100;Rua y

[EMAIL PROTECTED]:~]# OCPF=0; i=1; while IFS=';' read C N CPF END; do let
i+=1; LINHA="$C;$N;$CPF;$END"; if [ "$CPF" == "$OCPF" ] && [ $i -gt 1
]; then echo "$LINHA" >> dups.txt ; else echo "$LINHA" >> naodups.txt;
fi; OCPF=$CPF; done < <(sort -t';' -k3 txt)

[EMAIL PROTECTED]:~]# cat dups.txt
002;João Francisco Silva;12345678900;Rua z

[EMAIL PROTECTED]:~]# cat naodups.txt
001;João Silva;12345678900;Rua x
003;José;98765432100;Rua y

[EMAIL PROTECTED]:~]#


Sorry.. mas eu faço na pressa e não tenho paciencia de fazer script :D


--

Flávio do Carmo Junior


2008/1/23 Reinaldo Carvalho <[EMAIL PROTECTED]>:
>
>
>
>
>
>
> #!/bin/bash
>  > unicos.csv
>  > duplicados.csv
>
>  file=$(cat arquivo.csv)
>  while read cpf; do
>  lines=$(grep $cpf <<< "$file")
>  test $(grep -c $cpf <<< "$lines") -eq 1 && {
>  echo -e "$lines" >> unicos.csv
>  true
>  } || {
>  echo -e "$lines" >> duplicados.csv
>  }
>  done < <(cut -d";" -f3 <<< "$file" | uniq)
>
>
>
>  On 1/23/08, Reinaldo Carvalho <[EMAIL PROTECTED]> wrote:
>  > #!/bin/bash
>  > > unicos.csv
>  > > duplicados.csv
>  >
>  > file=$(cat arquivo.csv)
>  > while read cpf; do
>  > lines=$(grep $cpf <<< "$file")
>  > test $(grep -c $cpf <<< "$lines") -eq 1 && {
>  > echo -e "$lines" >> unicos.csv
>  > true
>  > } || {
>  > echo -e "$lines" >> duplicados.csv
>  > }
>  > done < <(cut -d";" -f3 arquivo.csv | uniq)
>  >
>  >
>  > --
>  > Reinaldo Carvalho
>  >
>  >
>  >
>  > On 1/23/08, César Vianna <[EMAIL PROTECTED]> wrote:
>  > > Buenas !!
>  > >
>  > > Tenho um csv com 5 campos. O terceiro são CPFs. Tenho que separar em
> dois
>  > > arquivos: um com os CPFs duplicados e outro com os CPFs únicos.
>  > >
>  > > Fiz assim:
>  > >
>  > > cut -d";" -f3 arquivo.csv | uniq -d
>  > >
>  > > e
>  > >
>  > > cut -d";" -f3 arquivo.csv | uniq
>  > >
>  > >
>  > > Ok. O problema é que eu perco o resto da linha. Tem alguma opção do
> uniq ou
>  > > outro comando para recuperar o conteúdo da linha? Como os grupos ( \1
> ... )
>  > > em expressões regulares.
>  > >
>  > >
>  > > [As partes desta mensagem que não continham texto foram removidas]
>  > >
>  > >
>  > >
>  > > ----------------------------------------------------------
>  > > Esta lista não admite a abordagem de outras liguagens de programação,
> como perl, C etc. Quem insistir em não seguir esta regra será moderado sem
> prévio aviso.
>  > > ----------------------------------------------------------
>  > > Sair da lista: [EMAIL PROTECTED]
>  > > ----------------------------------------------------------
>  > > Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
>  > > ----------------------------------------------------------
>  > > Servidor Newsgroup da lista: news.gmane.org
>  > > Grupo: gmane.org.user-groups.programming.shell.brazil
>  > >
>  > >
>  > > Links do Yahoo! Grupos
>  > >
>  > >
>  > >
>  >
>
>  --
>  Reinaldo Carvalho
>  

Responder a