Comandi Linux

Comando uniq di Linux

Comando uniq di Linux
Cos'è "unico"? È un ottimo strumento da riga di comando che segnalerà o ometterà qualsiasi testo duplicato nell'input dato. Fa parte delle GNU coreutils e quindi, disponibile su ogni singolo sistema UNIX/Linux là fuori. Iniziamo con "uniq"!

Utilizzo unico

Ecco come appare la struttura di base dei comandi "uniq".

unico

Ad esempio, diamo un'occhiata al contenuto di "duplicato.TXT". Naturalmente, contiene molti contenuti di testo duplicati ai fini di questo articolo.

gatto duplicato.txt | ordinare

Ci sono contenuti chiaramente duplicati, giusto?? Filtriamoli attraverso “uniq”.

gatto duplicato | ordina | unico

L'output sembra così migliore con solo i valori univoci, giusto?

Tuttavia, non è necessario utilizzare il metodo delle tubazioni per eseguire il lavoro. "uniq" può funzionare anche direttamente sui file.

unico

Eliminazione di contenuti duplicati

Sì, eliminare il contenuto duplicato dall'input e mantenere solo la prima occorrenza è il comportamento predefinito di "uniq". Nota che questa eliminazione duplicata si verifica solo quando "uniq" trova elementi duplicati simultanei.

Diamo un'occhiata a questo esempio. Ho creato un altro "duplicato1.txt" che contiene elementi duplicati. Tuttavia, non sono adiacenti l'uno all'altro.

pipistrello duplicato1.TXT

Ora, filtra questo output usando "uniq".

gatto duplicato.txt | unico

Tutti i contenuti duplicati sono lì! Ecco perché se stai lavorando con qualcosa di simile, reindirizza il contenuto a "ordina" per assicurarti che tutti i contenuti siano ordinati e che i duplicati siano adiacenti l'uno all'altro.

gatto duplicato.txt | ordinare

Ora, "uniq" farà il suo lavoro normalmente.

gatto duplicato.txt | ordina | unico

Numero di ripetizioni

Se vuoi, puoi controllare quante volte una riga viene ripetuta nel contenuto. Basta usare il flag "-c" con "uniq".

gatto duplicato.txt | ordina | uniq -c

Nota: "uniq" farà anche il suo normale lavoro di eliminazione di quelli duplicati.

Stampa di righe duplicate

La maggior parte delle volte, vogliamo sbarazzarci dei duplicati, giusto? Questa volta, che ne dici di controllare cosa è duplicato??

Sì, anche "uniq" è in grado di farlo. In questo caso, devi usare l'opzione "-D". Userò "ordina" nel mezzo per avere un risultato migliore e più raffinato.

gatto duplicato.txt | ordina | uniq -D

WOW! Sono un SACCO di duplicati! Tuttavia, tutti i duplicati sono raggruppati insieme, rendendo difficile la navigazione. Che ne dici di aggiungere un piccolo spazio nel mezzo??

uniq --all-repeated=

Qui sono disponibili 3 diversi metodi: nessuno (valore predefinito), anteponi e separa.

gatto duplicato.txt | ordina | uniq --all-repeated=anteponi

gatto duplicato.txt | ordina | uniq --all-repeated=separato

Ora sembra migliore.

Saltare il controllo dell'unicità

In molti casi, l'unicità deve essere verificata da una parte diversa della linea.

Capiamolo con l'esempio. Nel file duplicato1.txt, diciamo che la duplicazione è determinata dalla seconda parte. Come si dice a "uniq" di farlo?? Generalmente, controlla il primo campo (per impostazione predefinita). Bene, possiamo anche farlo. C'è questo flag "-f" per fare proprio il lavoro.

uniq -f
gatto duplicato.txt | sort -k 2 | uniq -f 1

Se ti stai chiedendo con il flag "sort", è per dire a "sort" di ordinare in base alla seconda colonna.

Visualizza tutte le righe ma separa i duplicati

Secondo tutti gli esempi sopra menzionati, "uniq" mantiene solo la prima occorrenza del contenuto duplicato e rimuove il resto. Che ne dici di rimuovere del tutto i contenuti duplicati?? Sì, usando il flag “-u”, possiamo forzare “uniq” a mantenere solo le righe non ripetitive.

gatto duplicato.txt | ordinare

gatto duplicato.txt | ordina | uniq -u

Hmm, troppi duplicati sono spariti..

Salta i caratteri iniziali

Abbiamo discusso su come dire a "uniq" di fare il suo lavoro per altri campi, giusto? È ora di iniziare il controllo dopo un numero di caratteri iniziali. A tal fine, il flag "-s" accompagnato dal numero di caratteri dirà a "uniq" di eseguire il lavoro.

gatto duplicato.txt | sort -k 2 | uniq -s 2

È simile all'esempio in cui "uniq" doveva svolgere il suo compito solo nel secondo campo. Vediamo un altro esempio con questo trucco.

gatto duplicato.txt | ordina | uniq -s 5

Controlla SOLO i caratteri iniziali

Proprio come abbiamo detto a "uniq" di saltare la prima coppia di caratteri, è anche possibile dire a "uniq" di limitare il controllo solo all'interno della prima coppia di caratteri. C'è un flag "-w" dedicato per questo scopo.

gatto duplicato.txt | ordina | uniq -w 5

Questo comando dice a "uniq" di eseguire il controllo dell'unicità entro i primi 5 caratteri.

Vediamo un altro esempio di questo comando.

gatto duplicato.txt | ordina | uniq -w 5

Elimina tutte le altre istanze di voci "duplicate" perché ha eseguito il controllo dell'unicità sulla parte "dupli".

Insensibilità alle maiuscole

Quando si verifica l'unicità, "uniq" controlla anche il caso dei caratteri. In alcune situazioni, la distinzione tra maiuscole e minuscole non ha importanza, quindi possiamo usare il flag "-i" per rendere "uniq" insensibile alle maiuscole.

Qui vi presento il file demo.

Qualche duplicazione davvero intelligente con un misto di lettere maiuscole e minuscole, giusto? È tempo di fare appello alla forza di "uniq" per eliminare il casino!

gatto duplicato.txt | ordina | uniq -i

desiderio concesso!

Uscita con terminazione NULL

Il comportamento predefinito di "uniq" è terminare l'output con una nuova riga. Tuttavia, l'output può anche essere terminato con un NULL. È abbastanza utile se lo utilizzerai negli script. Qui, la bandiera "-z" è ciò che fa il lavoro.

gatto duplicato.txt | ordina | uniq -z

Combinare più flag

Abbiamo imparato un certo numero di bandiere di "uniq", giusto? Che ne dici di combinarli insieme??

Ad esempio, sto combinando l'insensibilità al caso e il numero di ripetizioni insieme.

Se hai mai intenzione di mischiare più flag insieme, in un primo momento, assicurati che funzionino nel modo giusto insieme. A volte le cose non funzionano come dovrebbero.

Pensieri finali

"uniq" è uno strumento piuttosto unico offerto da Linux. Con così tante potenti funzionalità, può essere utile in tantissimi modi. Per l'elenco di tutte le bandiere e le relative spiegazioni consultare le pagine man e info di “uniq”.

uomo unico

informazioni uniche

Godere!

I 5 migliori mouse per computer ergonomici per Linux
L'uso prolungato del computer provoca dolore al polso o alle dita?? Soffri di rigidità articolare e devi continuamente stringerti la mano? Senti un do...
Come modificare le impostazioni del mouse e del touchpad utilizzando Xinput in Linux
La maggior parte delle distribuzioni Linux viene fornita con la libreria "libinput" per impostazione predefinita per gestire gli eventi di input su un...
Rimappa i pulsanti del mouse in modo diverso per software diversi con X-Mouse Button Control
Forse hai bisogno di uno strumento che possa cambiare il controllo del tuo mouse con ogni applicazione che utilizzi. In questo caso, puoi provare un'a...