2009/11/11 Marcio Gil <[email protected]>: > Pessoal, quero saber se existe algum comando equivalente ao 'uniq' > mas que possa eliminar duplicatas não sequenciais. Exemplo: > > ddeeff > aabbcc > aabbcc > gghhii > gghhii > aabbcc > > com 'cat ... | uniq' fica: > > ddeeff > aabbcc > gghhii > aabbcc > > com 'cat ... | sort -u' fica: > > aabbcc > ddeeff > gghhii > > Mas quero obter somente a primeira ocorrência de cada linha, na > ordem em que elas ocorrem: > > ddeeff > aabbcc > gghhii > > Há muito tempo eu escrevi um código pra fazer isso ( que chamei de > 'first': http://c.pastebin.com/f69cecb13 ), mas gostaria de saber se > existe alguma maneira de resolver com shel-script padrão. > > Obrigado. > > Marcio Gil.
Uma idéia a ser melhorada: TMP=$(mktemp /tmp/tmp.XXXXXX) sort arquivo | uniq > $TMP while [ $(wc -l < $TMP) -gt 0 ]; do linha=$(grep -m1 -f b arquivo) echo $linha sed -i "/$linha/d" $TMP done rm $TMP Se ficar alguma dúvida, eu explico :) -- Fabiano Caixeta Duarte Especialista em Redes de Computadores Linux User #195299 Ribeirão Preto - SP
