web-dev-qa-db-fra.com

Comment imprimer uniquement les valeurs en double à partir d'un fichier texte?

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

Autrement dit, seules les lignes répétées. Existe-t-il des outils de ligne de commande pour le découvrir sous Linux? (NB: les valeurs sont triées numériquement).

83
Nawshad Farruque

Vous pouvez utiliser uniq(1) pour cela:

uniq -d file.txt

Cela imprimera uniquement les doublons. Le fichier d'entrée doit être trié de telle sorte que tous les doublons soient consécutifs (ce qu'ils semblent être), alors exécutez-le d'abord par tri s'il ne l'est pas.

135
camh

Exécutez ceci: Perl -ne 'print if $a{$_}++' filename.txt

2
Sanjay Nair

uniq nécessite que votre liste soit ordonnée, triez les valeurs par défaut par ordre alphabétique

sort | uniq -d path/to/your/filename

ou

cat fileName | sort | uniq -d path/to/your/filename

2
jasonleonhard

Utilisation de uniq et awk:

cat File1  | uniq -c | awk '$1 > 1 { print $2 }'
1
Ricardo Reyes