Come stampare solo i valori duplicati da un file di testo?


Risposte:


119

Puoi usare uniq(1)per questo:

uniq -d file.txt

Questo stamperà solo i duplicati. Il file di input deve essere ordinato in modo tale che tutti i duplicati siano consecutivi (come sembrano), quindi esegui prima l'ordinamento se non lo è.


1
cosa succede se voglio solo i triplicati da stampare?
MiNdFrEaK il

8
@MiNdFrEaK sort | uniq -c | grep '^\s*3\s' | sed 's/^\s*[0-9]*\s*//'per i triplicati; sostituire "3" con qualsiasi N per N-
plicates

@MiNdFrEaK sort | uniq -c | sed -n 's/^[[:blank:]]*3[[:blank:]]\{1,\}//p'per i triplicati

@camh puoi farlo anche su file CSV? solo valori di una determinata colonna?
NumenorForLife,

1
ordina file.txt | uniq -d
ron,

1

Utilizzando uniqe awk:

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

6
Questo lavoro, ma non vedo perché installi l'output di cat?
Bernhard,

1
non tutti sanno che puoi fare uniq -c File1e allo stesso modo con molti altri strumenti. Questo è probabilmente quello che sta succedendo qui.
Matthias,

1

Eseguire questo: perl -ne 'print if $a{$_}++' filename.txt


3\n3\n4\n\4nper l'ingresso File1 che è ovviamente sbagliato.
Yaegashi,

il perl snip che mi trovo a rivisitare fornisce il numero di incidenze di ogni riga in modo che possa essere convogliato, ordinato e filtrato secondo necessità: perl -ne '$ a {$ _} ++; END {while (($ k, $ v) = ogni% a) {printf "% d \ t% s", $ v, $ k}} 'nomefile
Theophrastus

C'è un modo per farlo su una colonna specifica separata da un determinato separatore di campo?
Geremia,

Come indicato da Yaegashi, è necessaria una piccola correzione per soddisfare i requisiti: perl -ne 'print if 1 == $ a {$ _} ++' nomefile.txt Tra tutte le risposte, è la mia preferita, perché le altre risposte richiede di preelaborare tutti i dati con un ordinamento completo. Questa risposta avvia i risultati di output in modo più rapido ed efficiente.
BOC

0

uniq richiede che l'elenco sia ordinato, ordina i valori predefiniti in ordine alfabetico

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

o

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.