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
>