Supposons qu'il existe une colonne de valeurs numériques comme suit:
Fichier1:
1
2
3
3
3
4
4
4
5
6
Je veux la sortie:
3
4
C'est-à-dire, seulement les lignes répétées. Existe-t-il des outils en ligne de commande pour le savoir sous Linux? (NB: les valeurs sont triées numériquement).
shell
text-processing
MiNdFrEaK
la source
la source
man uniq
.Réponses:
Vous pouvez utiliser
uniq(1)
pour cela:Ceci n’imprimera que les doublons. Le fichier d'entrée doit être trié de manière à ce que tous les doublons soient consécutifs (ce qui semble être le cas). Par conséquent, exécutez-le en premier si ce n'est pas le cas.
la source
sort | uniq -c | grep '^\s*3\s' | sed 's/^\s*[0-9]*\s*//'
pour les triplicats; remplace "3" par n'importe quel N pour N-plicatessort | uniq -c | sed -n 's/^[[:blank:]]*3[[:blank:]]\{1,\}//p'
pour les triplicatsUtiliser
uniq
etawk
:la source
cat
?uniq -c File1
et de la même manière avec de nombreux autres outils. C'est probablement ce qui se passe ici.Exécutez ceci:
perl -ne 'print if $a{$_}++' filename.txt
la source
3\n3\n4\n\4n
pour l'entrée File1 qui est évidemment fausse.uniq
exige que votre liste soit commandée, le tri par défaut alphabétiquesort | uniq -d path/to/your/filename
ou
cat fileName | sort | uniq -d path/to/your/filename
la source