Amministratore Linux: comando uniq

Di seguito sono riportati gli interruttori comuni utilizzati con uniq. Questo comando riporta o omette le righe ripetute.

Interruttore Azione
-c Prefisso righe per numero di occorrenze
-io Ignora maiuscole e minuscole
-u Stampa solo linee uniche
-w Controlla i caratteri, confronta non più di n caratteri
-S Salta i caratteri, evita di confrontare i primi due N caratteri
-f Salta i campi, evita di confrontare i primi N campi
-D Stampa tutti i gruppi di linee duplicati

Abbiamo usato brevemente uniq in alcuni esempi precedenti. Iluniqil comando ci consente di filtrare le righe dei file in base alle corrispondenze. Ad esempio, supponiamo di avere un secondo dipendente di nome Matt Davis nelle vendite. Tre giorni dopo, la contabilità necessita di nuove stime per i premi di partecipazione alle vendite per il prossimo trimestre. Possiamo controllare l'elenco dei dipendenti utilizzando il seguente comando.

[[email protected] centos]# cat ./Documents/names.txt | wc -l 
30 
[[email protected] centos]#

Diciamo loro 30 persone nelle vendite per i premi di partecipazione annuale. Potrebbe esserci una buona probabilità che la contabilità rilevi una discrepanza: avevano solo bisogno di 29 targhe di premio uniche prodotte. Riproviamo -

[[email protected] Documents]# cut -d ":" -f 1,2 ./names.txt | sort | uniq | wc -l 
29
[[email protected] Documents]#

Ora abbiamo informazioni sufficienti per assegnare alla contabilità un numero preciso di premi di partecipazione unici per il reparto vendite (non sarà necessario pagare per avere due targhe uniche. Basta duplicarne un secondo per "Matt Davis").

Note- Quando si cercano linee univoche, si desidera sempre utilizzare sort, reindirizzando il suo output a uniq. Se le voci non uniq non sono in sequenza in linea, non verranno viste come righe duplicate.

Per generare rapidamente un report che ci faccia sapere quanti venditori condividono un ufficio:

[[email protected] Documents]# sort -t":" -k3 ./names.txt | cut -d ":" -f3  | 
uniq -c | sort -n 
  1 100 
  1 108 
  1 201 
  1 203 
  1 204 
  1 205 
  1 206 
  1 301 
  1 304 
  1 404 
  1 405 
  1 501 
  1 504 
  1 602 
  1 603 
  1 608 
  1 702 
  1 902 
  2 101 
  2 102 
  2 305 
  2 901 
  2 903 
  3 403 
  
[[email protected] Documents]#