Oooops!
A segunda linha tá errada. O certo é:
grep -vf duplicados arq > individuais
Isto que dá digitar novamente em vez de usar as ciências exatas do
ctrl+(c|v) :P
Abraços!
César Vianna escreveu:
> Buenas !!
>
> Tenho um csv com 5 campos. O terceiro são CPFs. Tenho que separar em dois
> arqui
Acho q vai funcionar:
$ cut -d\; -f3 arquivo | uniq -d | awk '{ printf "/%s/d;",$0}' | sed
-f - arquivo > unicos
para duplicados basta usar uniq puro :-)
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
César Vianna escreveu:
> 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 pro
Fala César,
O problema é que o uniq tem opção para saltar os n primeiros campos mas não
tem como saltr os m últimos. Desta forma vc pode saltar o código e o nome,
mas o uniq irá atuar no CPF e endereço e aí a vaca vai pro brejo.
O que vou portar não deve ser veloz, mas pelo menos é um one-liner co
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" ==
#!/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";
#!/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 <
O arquivo é da seguinte forma
Código;Nome;CPF;Endereço
001;João Silva;12345678900;Rua x
002;João Francisco Silva;12345678900;Rua x
003;José;98765432100;Rua y
O resultado esperado é separar
#CPF único
003;José;98765432100;Rua
e
#CPF duplicado
001;João Silva;12345678900;Rua x
002;João Francisco
Não entendi bem..
mas veja as opções do sort e do uniq...
Exemplo:
sort
-k, --key=POS1[,POS2] start a key at POS1, end it at POS2 (origin 1)
-t, --field-separator=SEP use SEP instead of non-blank to blank transition
uniq
-f, --skip-fields=N avoid comparing the first N fields
Sem u
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ç
10 matches
Mail list logo