Come trovare dati duplicati in un file di testo Linux con uniq

Come trovare dati duplicati in un file di testo Linux con uniq

Ti sei mai imbattuto in file di testo con righe ripetute e parole duplicate? Forse lavori regolarmente con l'output dei comandi e desideri filtrarli per stringhe distinte. Quando si tratta di file di testo e rimozione di dati ridondanti in Linux, il comando uniq è la soluzione migliore.





In questo articolo, discuteremo in modo approfondito il comando uniq, insieme a una guida dettagliata su come utilizzare il comando per rimuovere le righe duplicate da un file di testo.





Che cos'è il comando uniq?

Il comando uniq in Linux viene utilizzato per visualizzare righe identiche in un file di testo. Questo comando può essere utile se desideri rimuovere parole o stringhe duplicate da un file di testo. Poiché il comando uniq confronta le righe adiacenti per trovare copie ridondanti, funziona solo con file di testo ordinati.





Per fortuna, puoi pipe il ordinare comando con uniq per organizzare il file di testo in modo compatibile con il comando. Oltre a visualizzare righe ripetute, il comando uniq può anche contare l'occorrenza di righe duplicate in un file di testo.

Come usare il comando uniq

Ci sono varie opzioni e flag che puoi usare con uniq. Alcuni sono di base ed eseguono operazioni semplici come la stampa di righe ripetute, mentre altri sono per utenti avanzati che lavorano spesso con file di testo su Linux.



Sintassi di base

La sintassi di base del comando uniq è:

uniq option input output

...dove opzione è il flag utilizzato per invocare metodi specifici del comando, ingresso è il file di testo per l'elaborazione, e produzione è il percorso del file che memorizzerà l'output.





Il produzione argomento è facoltativo e può essere saltato. Se un utente non specifica il file di input, uniq prende i dati dallo standard output come input. Ciò consente all'utente di eseguire il pipe uniq con altri comandi Linux .

Esempio di file di testo

Useremo il file di testo duplicato.txt come input per il comando.





127.0.0.1 TCP
127.0.0.1 UDP
Do catch this
DO CATCH THIS
Don't match this
Don't catch this
This is a text file.
This is a text file.
THIS IS A TEXT FILE.
Unique lines are really rare.

Nota che abbiamo già ordinato questo file di testo usando il ordinare comando. Se stai lavorando con qualche altro file di testo, puoi ordinarlo usando il seguente comando:

sort filename.txt > sorted.txt

Rimuovi linee duplicate

L'uso più elementare di uniq consiste nel rimuovere le stringhe ripetute dall'input e stampare un output univoco.

uniq duplicate.txt

Produzione:

Notare che il sistema non visualizza la seconda occorrenza della riga Questo è un file di testo . Inoltre, il suddetto comando stampa solo le righe univoche nel file e non influisce sul contenuto del file di testo originale.

Conta righe ripetute

Per visualizzare il numero di righe ripetute in un file di testo, utilizzare il tasto -C flag con il comando predefinito.

uniq -c duplicate.txt

Produzione:

Il sistema visualizza il conteggio di ogni riga presente nel file di testo. Puoi vedere che la linea Questo è un file di testo si verifica due volte nel file. Per impostazione predefinita, il comando uniq fa distinzione tra maiuscole e minuscole.

Per stampare solo righe duplicate dal file di testo, usa il pulsante -D bandiera. Il -D sta per Duplicare .

uniq -D duplicate.txt

Il sistema visualizzerà l'output come segue.

This is a text file.
This is a text file.

Salta i campi durante il controllo dei duplicati

Se vuoi saltare un certo numero di campi durante la corrispondenza delle stringhe, puoi usare il -F bandiera con il comando. Il -F sta per Campo .

Considera il seguente file di testo campi.txt .

192.168.0.1 TCP
127.0.0.1 TCP
354.231.1.1 TCP
Linux FS
Windows FS
macOS FS

Per saltare il primo campo:

uniq -f 1 fields.txt

Produzione:

192.168.0.1 TCP
Linux FS

Il suddetto comando ha saltato il primo campo (gli indirizzi IP e i nomi del sistema operativo) e ha trovato la corrispondenza con la seconda parola (TCP e FS). Quindi, ha visualizzato la prima occorrenza di ogni corrispondenza come output.

Ignora i caratteri durante il confronto

Come saltare i campi, puoi anche saltare i caratteri. Il -S flag consente di specificare il numero di caratteri da saltare durante la corrispondenza delle righe duplicate. Questa funzione aiuta quando i dati con cui stai lavorando sono sotto forma di un elenco come segue:

Apple Music ha cancellato tutta la mia musica
1. First
2. Second
3. Second
4. Second
5. Third
6. Third
7. Fourth
8. Fifth

Per ignorare i primi due caratteri (la numerazione dell'elenco) nel file list.txt :

uniq -s 2 list.txt

Produzione:

Nell'output sopra, i primi due caratteri sono stati ignorati e gli altri sono stati abbinati per linee univoche.

Controlla il primo numero di caratteri per i duplicati

Il -in flag ti consente di controllare solo un numero fisso di caratteri per i duplicati. Per esempio:

uniq -w 2 duplicate.txt

Il comando di cui sopra corrisponderà solo ai primi due caratteri e stamperà righe univoche se presenti.

Produzione:

Rimuovi la distinzione tra maiuscole e minuscole

Come accennato in precedenza, uniq fa distinzione tra maiuscole e minuscole durante la corrispondenza delle righe in un file. Per ignorare il carattere maiuscolo, usa il -io opzione con il comando.

uniq -i duplicate.txt

Vedrai il seguente output.

Nota nell'output sopra, uniq non ha visualizzato le linee PRENDI QUESTO e QUESTO È UN FILE DI TESTO .

Invia output a un file

Per inviare l'output del comando uniq a un file, puoi usare il Reindirizzamento dell'output ( > ) carattere come segue:

uniq -i duplicate.txt > otherfile.txt

Durante l'invio di un output a un file di testo, il sistema non visualizza l'output del comando. Puoi controllare il contenuto del nuovo file usando il gatto comando.

cat otherfile.txt

Puoi anche usare altri modi per invia l'output della riga di comando a un file in Linux .

Analisi dei dati duplicati con uniq

La maggior parte delle volte durante la gestione dei server Linux, lavorerai sul terminale o modificherai file di testo. Pertanto, sapere come rimuovere le copie ridondanti delle righe in un file di testo può essere una grande risorsa per il tuo set di abilità Linux.

Lavorare con i file di testo può essere frustrante se non sai come filtrare e ordinare il testo in un file. Per semplificare il tuo lavoro, Linux ha diversi comandi di modifica del testo come sed e awk che ti consentono di lavorare in modo efficiente con file di testo e output della riga di comando.

Condividere Condividere Tweet E-mail Questi 10 esempi di Sed ti renderanno un utente esperto di Linux

Vuoi diventare un utente esperto di Linux? Fare i conti con sed aiuterà. Impara da questi 10 esempi di sed.

Leggi Avanti
Argomenti correlati
  • Linux
  • Linux
Circa l'autore Deepesh Sharma(79 articoli pubblicati)

Deepesh è l'editor junior per Linux di MUO. Scrive guide informative su Linux, con l'obiettivo di fornire un'esperienza felice a tutti i nuovi arrivati. Non sono sicuro dei film, ma se vuoi parlare di tecnologia, è il tuo ragazzo. Nel suo tempo libero, puoi trovarlo a leggere libri, ascoltare diversi generi musicali o suonare la sua chitarra.

Altro da Deepesh Sharma

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti