GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare il comando uniq per elaborare gli elenchi in Linux

Abbiamo visto il comando di ordinamento nel nostro articolo precedente, ma l'ordinamento di qualsiasi file spesso risulterà in molte righe duplicate adiacenti l'una all'altra. Diventa troppo difficile visualizzare correttamente quelle righe.

In questo scenario, uniq comando ti aiuta a stampare righe duplicate una volta nell'output. Elimina effettivamente le righe ripetute e stampa la prima riga ripetuta adiacente, il che ci consente di visualizzare correttamente l'output.

Le righe utilizzate nel file di input per uniq il comando non può superare i 2048 byte di lunghezza (inclusi eventuali caratteri di nuova riga) né contenere caratteri nulli.

Sintassi

uniq [OPTION]... [INPUT [OUTPUT]]

Esempi

Di seguito sono riportati una serie di esempi, che iniziano senza opzioni. Esamineremo diversi casi d'uso. Alcuni riguardano solo uniq e altri si basano su comandi aggiuntivi.

Senza alcuna opzione

Di seguito è riportato un file denominato file2 , che contiene alcuni dati. Si noti che questo file non è ordinato e le righe duplicate non sono adiacenti l'una all'altra. Prima di utilizzare uniq comando con questo file, dovremmo sort esso. Nell'esempio, ho provato uniq comando con il file originale, ma stampa solo l'output così com'è, proprio come un cat produzione. Nel prossimo esempio, prendiamo l'output da un sort comando e pipe con uniq comando. Questo ci aiuta a capire il comportamento di uniq comando:

$ cat file2
ChhatrapatiShahuMaharaj
Dr.B.R.Ambedkar
Budhha
Dr.B.R.Ambedkar
Budhha
Dr.B.R.Ambedkar
Budhha

$ uniq file2
ChhatrapatiShahuMaharaj
Dr.B.R.Ambedkar
Budhha
Dr.B.R.Ambedkar
Budhha
Dr.B.R.Ambedkar
Budhha

$ sort file2
Budhha
Budhha
Budhha
ChhatrapatiShahuMaharaj
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar

$ sort file2 | uniq
Budhha
ChhatrapatiShahuMaharaj
Dr.B.R.Ambedkar

Con -c, opzione --count

Di seguito, nel prossimo esempio, stiamo usando il -c opzione per contare le righe ripetute. Il uniq comando stampa che conta come prefisso con la riga. L'esempio seguente ci dice che la prima riga viene ripetuta tre volte, la seconda riga una volta e la terza riga tre volte:

$ sort file2 | uniq -c
    3 Budhha
    1 ChhatrapatiShahuMaharaj
    3 Dr.B.R.Ambedkar

Con -d, opzione --repeated

Il -d l'opzione stampa solo le righe ripetute. Elimina le righe non duplicate. Pertanto, riga ChhatrapatiShahuMaharaj è stato scartato nell'esempio seguente:

$ sort file2 | uniq -d
Budhha
Dr.B.R.Ambedkar

Nell'esempio seguente, ho usato -c opzione per verificare se il -d l'opzione sta stampando solo le righe ripetute o meno:

$ sort file2 | uniq -cd
    3 Budhha
    3 Dr.B.R.Ambedkar

Con -D, opzione --all-repeated

Il -D l'opzione stampa righe ripetute e scarta le righe non duplicate. Nell'esempio seguente, uniq il comando stampa solo tutte le righe duplicate e scarta le righe non duplicate:

$ sort file2 | uniq -D
Budhha
Budhha
Budhha
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar
Dr.B.R.Ambedkar

Con -u, --unique opzione

Di fronte all'opzione sopra, il -u l'opzione stampa righe univoche, ovvero righe non duplicate. Pertanto, nell'esempio seguente, stampa ChhatrapatiShahuMaharaj come output:

$ sort file2 | uniq -u
ChhatrapatiShahuMaharaj

Con l'opzione -i, --ignore-case

Usando il -i opzione, possiamo ignorare la distinzione tra maiuscole e minuscole dei caratteri. Di seguito ho fornito un output di uniq comando con e senza -i opzione per confrontare:

$ cat file3
aaaa
aaaa
AAAA
AAAA
bbbb
BBBB

$ uniq file3
aaaa
AAAA
bbbb
BBBB

$ uniq -i file3
aaaa
bbbb

Con -f, --skip-fields=N

A volte abbiamo bisogno di saltare alcuni campi per filtrare le righe duplicate. Questo è possibile usando il -f opzione. Nell'esempio seguente, saltiamo il primo campo (prima colonna) per confrontare le righe duplicate del secondo campo. Ho fornito entrambi gli esempi, con e senza -f opzione, per una migliore comprensione del comportamento dell'opzione:

$ cat file5
Amit aaaa
Ajit aaaa
Advi bbbb
Kaju bbbb

$ uniq file5
Amit aaaa
Ajit aaaa
Advi bbbb
Kaju bbbb

$ uniq -f 1 file5
Amit aaaa
Advi bbbb

[ Ai lettori è piaciuto anche:Lavorare con pipe sulla riga di comando di Linux ]

Con -s, opzione --skip-char=N

Proprio come il campo, possiamo anche saltare i caratteri usando -s opzione. Tieni presente che uniq comando stampa solo la prima riga duplicata e scarta le altre righe duplicate. Pertanto 33aa e 55bb sono stati scartati. Ecco l'esempio:

$ cat file4
22aa
33aa
44bb
55bb

$ uniq file4
22aa
33aa
44bb
55bb

$ uniq -s 2 file4
22aa
44bb

Con -w, --check-chars=N opzione

Proprio come saltare i caratteri, possiamo considerare anche i caratteri usando il -w opzione, come nell'esempio:

$ cat file6
aa12
aa34
bb56
bb78

$ uniq file6
aa12
aa34
bb56
bb78

$ uniq -w 2 file6
aa12
bb56

Con l'opzione --version

Usa il --version opzione per verificare la versione di uniq comando.

$ uniq --version
uniq (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Richard M. Stallman and David MacKenzie.

[ Download gratuito:cheat sheet dei comandi avanzati di Linux. ] 

Concludi

uniq non rileva le linee ripetute a meno che non siano adiacenti. Il uniq il comando può contare e stampare il numero di righe ripetute. Proprio come le righe duplicate, possiamo anche filtrare le righe univoche (linee non duplicate) e ignorare la distinzione tra maiuscole e minuscole. Possiamo saltare campi e caratteri prima di confrontare le righe duplicate e considerare anche i caratteri per filtrare le righe.

Dopo aver esaminato il multiplo uniq opzioni di comando, vorrei condividere una piccola immagine per tenerla con te come riferimento.


Linux
  1. Come usare il comando sed di Linux

  2. Come usare il comando Linux grep

  3. Come usare il comando cronologia in Linux

  4. Casella degli strumenti Sysadmin:come utilizzare il comando di ordinamento per elaborare il testo in Linux

  5. Come utilizzare il comando "schermo" in Linux

Come utilizzare il comando Ping di Linux

Come utilizzare il comando fd sul sistema Linux

Come utilizzare il comando wget in Linux?

Come usare il comando xargs in Linux?

Come utilizzare il comando RPM in Linux

Come utilizzare il comando which in Linux