Suponha que exista uma coluna de valores numéricos, como a seguir:
Arquivo1:
1
2
3
3
3
4
4
4
5
6
Eu quero a saída:
3
4
Ou seja, apenas as linhas repetidas. Existem ferramentas de linha de comando para descobrir isso no Linux? (Nota: os valores são ordenados numericamente).
shell
text-processing
MiNdFrEaK
fonte
fonte
man uniq
.Respostas:
Você pode usar
uniq(1)
para isso:Isso imprimirá apenas as duplicatas. O arquivo de entrada precisa ser classificado de forma que todas as duplicatas sejam consecutivas (o que parecem ser), portanto, execute-o primeiro pela classificação, se não for.
fonte
sort | uniq -c | grep '^\s*3\s' | sed 's/^\s*[0-9]*\s*//'
para triplicatas; substitua "3" por qualquer N parasort | uniq -c | sed -n 's/^[[:blank:]]*3[[:blank:]]\{1,\}//p'
for triplicatesUsando
uniq
eawk
:fonte
cat
?uniq -c File1
mesmo com muitas outras ferramentas. Provavelmente é o que está acontecendo aqui.Execute isto:
perl -ne 'print if $a{$_}++' filename.txt
fonte
3\n3\n4\n\4n
para a entrada File1 que está obviamente errada.uniq
requer que sua lista seja ordenada, classifique os padrões como alfabéticossort | uniq -d path/to/your/filename
ou
cat fileName | sort | uniq -d path/to/your/filename
fonte