GNU/Linux >> Linux Esercitazione >  >> Linux

Tutorial sui comandi Linux Uniq per principianti (10 esempi)

Se sei un utente della riga di comando di Linux e il tuo lavoro consiste nel giocare con i file di testo, dovresti sapere (se non già) che ci sono molte utilità della riga di comando che potrebbero esserti di grande aiuto in diverse situazioni. Ad esempio, esiste uno strumento denominato "uniq" che segnala o addirittura elimina le righe ripetute in un file.

In questo articolo, discuteremo di "uniq" attraverso esempi di facile comprensione. Ma prima di farlo, vale la pena ricordare che tutti gli esempi e le istruzioni menzionati in questo tutorial sono stati testati su Ubuntu 16.04LTS.

Comando Linux Uniq

Come già accennato all'inizio, il comando uniq riporta o omette righe ripetute. Ecco la sintassi generale di questo comando:

uniq [OPZIONE]... [INGRESSO [USCITA]]

Secondo la pagina man dell'utilità:"Filtra le righe corrispondenti adiacenti da INPUT (o input standard), scrivendo su OUTPUT (o output standard). Senza opzioni, le righe corrispondenti vengono unite alla prima occorrenza."

Di seguito sono riportati alcuni esempi che ti aiuteranno a comprendere meglio lo strumento.

1. Come eliminare le righe ripetute usando il comando uniq

Supponiamo che il file contenga le seguenti righe:

Chiaramente, ogni riga è ripetuta. Ora eseguiamo Uniq su questo file e vediamo cosa succede.

uniq file1

Quindi, come puoi vedere, l'output prodotto dal comando non contiene righe ripetute. Si prega di notare che il file originale - 'file1' nel nostro caso - rimane inalterato. Puoi reindirizzare l'output dello strumento su un altro file nel caso in cui desideri salvarlo e lavorarci sopra.

2. Come visualizzare il numero di ripetizioni per ogni riga

Se lo desideri, puoi anche fare in modo che uniq visualizzi in output il numero di volte in cui una riga viene ripetuta. Questo può essere fatto usando il -c opzione della riga di comando. Ad esempio, il comando seguente:

uniq -c file1

produce il seguente output:

Quindi, come puoi vedere, il numero di ripetizioni per ogni riga è preceduto nell'output.

3. Come stampare solo righe duplicate usando uniq

Per fare in modo che uniq stampi solo righe doppie, usa il -D opzione della riga di comando. Ad esempio, supponiamo che file1 ora contenga una riga in più in fondo (notare che questa riga non viene ripetuta).

Ora, quando eseguo il seguente comando:

uniq -D file1

Viene prodotto il seguente output:

Come puoi vedere, l'opzione -D fa in modo che uniq visualizzi tutte le righe ripetute in output, comprese tutte le loro ripetizioni. Per separare meglio, puoi avere una riga vuota dopo ogni gruppo di righe ripetute, cosa che può essere fatta usando il --all-repeated opzione.

uniq --all-repeated[=METHOD] file1

Questa opzione richiede che l'utente inserisca un nome di metodo. I valori potrebbero essere anteporre (per anteporre una riga vuota) o separare (per aggiungere una riga vuota). Ad esempio, ecco questa opzione in azione con anteporre metodo.

Andando avanti, se vuoi che lo strumento visualizzi solo una riga duplicata per gruppo, puoi utilizzare -d opzione. Eccone un esempio:

Chiaramente, nell'output veniva visualizzata solo una riga ripetuta per ogni gruppo.

4. Come fare uniq per evitare di confrontare i primi campi

A volte, a seconda della situazione, la somiglianza di due linee è definita da una piccola parte di quelle linee. Ad esempio, considera il contenuto del seguente file:

Ora, supponiamo che le linee siano considerate simili o diverse in base al loro secondo campo (HTF o FF) e vuoi trasmettere questo a uniq, quindi puoi farlo usando -f opzione della riga di comando.

uniq -f [number-of-fields-to-skip] [file-name]

L'opzione -f richiede di passare un numero che rappresenta il numero di campi che vuoi che il comando salti. Ad esempio, nel nostro caso, possiamo passare '1' come argomento a -f poiché è solo il primo campo che vogliamo che uniq salti.

uniq -f 1 file1

L'output mostra chiaramente che uniq considerava sia la prima che la terza riga ripetute in base ai rispettivi secondi campi.

5. Come fare in modo che uniq visualizzi tutte le righe, separando i gruppi ripetitivi con una riga vuota

Nel caso in cui il requisito sia visualizzare tutte le righe, separando i gruppi ripetitivi di righe con una riga vuota, è possibile utilizzare il --group opzione. Come il --tutto-ripetuto opzione di cui abbiamo parlato in precedenza, --group richiede anche di indicare la posizione della riga vuota (anteporre , aggiungi o entrambi ).

Ecco un esempio:

Nota che l'opzione -f l'abbiamo già discussa nella sezione precedente.

6. Come fare in modo che uniq stampi solo righe non ripetitive

Come ormai avrai capito, per impostazione predefinita il comando uniq mostra solo righe ripetute nell'output. Ma se lo desideri, puoi invece fare in modo che visualizzi solo righe non ripetute o univoche. Questo può essere fatto usando -u opzione della riga di comando.

uniq -u [file-name]

Quindi, nel nostro caso:

uniq -u file1

Ecco un esempio:

Nota che l'opzione -f che abbiamo già discusso nella sezione/punto numero 4.

7. Come rendere uniq evitare di confrontare il numero impostato di caratteri iniziali

In uno dei nostri esempi precedenti, abbiamo discusso di come fare in modo che uniq salti i campi. Tuttavia, se lo desideri, puoi forzare lo strumento a saltare anche un determinato numero di caratteri iniziali. È possibile accedere a questa funzione utilizzando i -s opzione della riga di comando.

uniq -s [numero-caratteri] nomefile

Ad esempio, supponiamo che il file contenga le seguenti righe:

Ora, se vuoi che uniq salti i primi 4 caratteri in ogni riga prima del confronto, puoi farlo nel modo seguente:

uniq -s 4 file1

Ecco il comando sopra in azione:

Quindi puoi vedere che la quarta riga (faq_forge) che era originariamente lì è stata saltata nell'output. Questo perché dopo aver saltato i primi quattro caratteri, la terza e la quarta riga erano uguali, e quindi considerate ripetute da uniq.

8. Come limitare il confronto per impostare il numero di caratteri

Simile al modo in cui salti i caratteri, puoi anche chiedere a uniq di limitare il confronto a un determinato numero di caratteri. Per questo, dovrai usare -w opzione della riga di comando.

uniq -w [numero-caratteri] [nome-file]

Ad esempio, supponiamo che il file contenga le seguenti righe:

Ora, se il requisito è limitare il confronto ai primi 3 caratteri, è possibile farlo nel modo seguente:

uniq -w 3 file1

Ecco il comando sopra in azione:

Dato che i primi 3 caratteri della terza e della quarta riga sono gli stessi, quindi queste righe sono state considerate ripetute. Quindi, solo il terzo viene visualizzato nell'output.

9. Come rendere uniq confronto senza distinzione tra maiuscole e minuscole

Per impostazione predefinita, il confronto eseguito da uniq distingue tra maiuscole e minuscole. Tuttavia, puoi rendere il processo senza distinzione tra maiuscole e minuscole utilizzando -i opzione della riga di comando.

Ad esempio, considera lo stesso caso di cui abbiamo discusso nella sezione precedente, solo che la quarta riga inizia con la H, la O e la W maiuscole.

Ora, se provi a eseguire lo stesso comando che abbiamo usato nella sezione precedente, vedrai che l'output è diverso:

Questo perché i primi tre caratteri della terza e della quarta riga sono diversi per uniq a causa del loro caso. In queste situazioni, puoi rendere il confronto senza distinzione tra maiuscole e minuscole usando l'opzione della riga di comando -i.

10. Come rendere un'uscita uniq terminata NUL

Per impostazione predefinita, l'output prodotto da uniq è terminato con una nuova riga. Tuttavia, se lo desideri, puoi invece avere un output terminato con NUL (utile durante la gestione di uniq negli script). Ciò può essere reso possibile utilizzando -z opzione della riga di comando.

uniq -z  [nome-file]

Conclusione

Abbiamo coperto praticamente tutte le opzioni della riga di comando offerte dal comando uniq, quindi esercitati su tutto ciò che abbiamo discusso qui e dovresti avere un'idea solida di come funziona uniq e quali funzionalità fornisce. Come sempre, in caso di domande o dubbi, consulta prima la pagina man del comando.


Linux
  1. Tutorial sul comando cd di Linux per principianti (8 esempi)

  2. Tutorial comando Linux comm per principianti (5 esempi)

  3. Tutorial sui comandi Linux Uniq per principianti (10 esempi)

  4. Linux df Command Tutorial per principianti (8 esempi)

  5. Tutorial sul comando della data di Linux per principianti (8 esempi)

Linux who Command Tutorial per principianti (8 esempi)

Linux nl Command Tutorial per principianti (7 esempi)

Tutorial sui comandi Linux nm per principianti (10 esempi)

Esercitazione sui comandi OD Linux per principianti (6 esempi)

Linux w Command Tutorial per principianti (5 esempi)

Tutorial sui comandi Linux ss per principianti (8 esempi)