Comando Pipe, Grep e Ordina in Linux/Unix con esempi

⚡ Riepilogo intelligente

I comandi pipe, grep e sort in Linux e Unix concatenano e filtrano il testo: una pipe invia l'output di un comando al successivo, grep cerca modelli e sort ordina le righe, mentre i filtri trasformano i dati tra di essi.

  • 🔗 Tubo: Il simbolo della barra verticale (|) passa l'output di un comando come input al comando successivo.
  • 📄 Cercapersone: Il comando cat piped to less, pg, or more mostra un file lungo una schermata alla volta.
  • 🔍 presa: Il comando grep cerca in un file le righe che corrispondono a una stringa o a un modello.
  • 🎚️ Opzioni di grep: Le opzioni come -v, -c, -n, -i e -l invertono, contano, numerano, ignorano la distinzione tra maiuscole e minuscole ed elencano i file.
  • 🔤 ordinare: Il comando sort ordina le righe di un file, con le opzioni -r, -n e -f per l'ordinamento inverso, numerico e senza distinzione tra maiuscole e minuscole.
  • 🧪 Filtri: I comandi di filtro come grep, sort, awk, sed e wc elaborano l'input tramite pipeline e producono output.
  • 🤖 Aiuto tramite intelligenza artificiale: Gli assistenti basati sull'intelligenza artificiale e GitHub Copilot possono creare e spiegare pipeline, eseguire operazioni di ricerca (grep) e ordinare pipeline.

Comandi pipe, grep e sort in Linux e Unix con esempi

Pipe, grep e sort sono tra gli strumenti più utilizzati su Linux riga di comando, perché permette di collegare piccoli comandi in un unico flusso di lavoro potente. Questa pagina spiega ciascuna di esse con esempi pratici, quindi mostra come i filtri le collegano tra loro.

Cos'è una pipe in Linux?

La pipe è un comando di Linux che permette di utilizzare due o più comandi in modo tale che l'output di un comando diventi l'input del successivo. In breve, l'output di ogni processo alimenta direttamente quello successivo, come in una pipeline. Il simbolo '|' indica una pipe.

Le pipe ti aiutano a combinare due o più comandi contemporaneamente ed eseguirli in sequenza. Puoi utilizzare comandi potenti che svolgono attività complesse in un batter d'occhio.

Cerchiamo di capirlo con un esempio.

Quando si utilizza il comando 'cat' per visualizzare un file che si estende su più pagine, il prompt passa rapidamente all'ultima pagina del file e non si vede il contenuto della parte centrale.

Per evitare questo problema, è possibile reindirizzare l'output del comando 'cat' al comando 'less', che mostra solo una porzione di contenuto alla volta, pari alla lunghezza dello scorrimento.

cat filename | less

Un'illustrazione chiarirebbe il concetto. Il diagramma seguente mostra come una tubazione trasferisce l'output di un comando al successivo.

Diagramma di una pipe Linux che passa l'output di un comando come input al successivo.

comandi 'pg' e 'more'

Invece di 'less', puoi anche usare il comando pg o more:

cat Filename | pg

or

cat Filename | more

È quindi possibile visualizzare il file suddiviso in sezioni più gestibili e scorrere verso il basso semplicemente premendo il tasto Invio. Lo screenshot qui sotto mostra un file impaginato con il comando more.

cat reindirizzato al comando more, paginando un file lungo una schermata alla volta

Il comando "grep".

Supponiamo di voler cercare informazioni specifiche, come ad esempio un codice postale, all'interno di un file di testo.

Puoi scorrere manualmente il contenuto per trace le informazioni. Un'opzione migliore è utilizzare il grep comando. Analizza il documento alla ricerca delle informazioni desiderate e presenta il risultato nel formato desiderato.

Sintassi:

grep search_string

Vediamolo in azione. Lo screenshot qui sotto mostra il risultato della ricerca.

comando grep che cerca nel file di esempio le stringhe Apple e Eat

In questo caso, il comando grep ha cercato nel file 'sample' le stringhe 'Apple' e 'Eat'. Le seguenti opzioni possono essere utilizzate con questo comando.

Opzione Funzione
-v Mostra tutte le righe che non corrispondono alla stringa cercata
-c Visualizza solo il conteggio delle righe corrispondenti
-n Mostra la linea corrispondente e il suo numero
-i Corrisponde sia alle maiuscole che alle minuscole
-l Mostra solo il nome del file con la stringa

Proviamo ad applicare l'opzione '-i' allo stesso file utilizzato in precedenza. Lo screenshot qui sotto mostra il risultato senza distinzione tra maiuscole e minuscole.

grep -i esegue una ricerca senza distinzione tra maiuscole e minuscole della lettera a

Utilizzando l'opzione '-i', grep ha filtrato la stringa 'a' (senza distinzione tra maiuscole e minuscole) da tutte le righe.

Il comando "ordina".

Questo comando aiuta a ordinare alfabeticamente il contenuto di un file.

La sintassi per questo comando è:

sort Filename

Consideriamo il contenuto di un file, mostrato con il gatto qui sotto.

Il comando cat mostra il contenuto non ordinato del file abc

L'esecuzione del comando sort ordina le righe in ordine alfabetico, come mostrato di seguito.

Comando sort che ordina il contenuto del file abc in ordine alfabetico

Esistono anche delle estensioni a questo comando, che sono elencate di seguito.

Opzione Funzione
-r Reversesmistamento
-n Ordina numericamente
-f Ordinamento senza distinzione tra maiuscole e minuscole

L'esempio seguente mostra l'ordinamento inverso dei contenuti nel file 'abc'.

Il comando sort -r ordina in ordine inverso il contenuto del file abc

Cos'è un filtro?

Linux dispone di numerosi comandi di filtro, come awk, grep, sed, spell e wc. Un filtro riceve un input da un comando, lo elabora e restituisce un output.

Quando si concatenano due comandi, l'output "filtrato" del primo comando viene passato al successivo. Il diagramma seguente illustra come un filtro si inserisce in una pipeline.

Schema di un filtro Linux che riceve input tramite pipe, li elabora e produce un output.

Cerchiamo di capirlo con l'aiuto di un esempio. Abbiamo il seguente file 'sample', mostrato con il gatto qui sotto.

comando cat che mostra il contenuto del file di esempio prima del filtraggio

Vogliamo evidenziare solo le righe che non contengono il carattere 'a', ma il risultato deve essere in ordine inverso. A tale scopo, è possibile utilizzare la seguente sintassi:

cat sample | grep -v a | sort -r

Osserviamo il risultato, mostrato nello screenshot qui sotto.

cat ha elaborato l'output di grep -v e sort -r producendo righe in ordine inverso senza la lettera a

DOMANDE FREQUENTI

La pipe (|) invia l'output di un comando direttamente a un altro comando, concatenandoli. Il reindirizzamento (> e <) collega invece un comando a un file, scrivendo l'output su un file o leggendo l'input da un file. Le pipe collegano i comandi; il reindirizzamento collega i comandi e i file.

grep è l'acronimo di Global Regular Expression Print (stampa di espressioni regolari globali). Analizza un file o un input riga per riga e stampa ogni riga che corrisponde al modello specificato. Il nome deriva dal vecchio comando dell'editor ed g/re/p, che eseguiva la stessa ricerca.

Il comando `sort` ha un'opzione `-u` che ordina e rimuove le righe duplicate in un'unica operazione: `sort -u file`. È anche possibile reindirizzare l'output di `sort` a `uniq`, come in `sort file | uniq`, poiché `uniq` rimuove solo i duplicati che sono già adiacenti.

Termina la pipeline con il reindirizzamento: `cat sample | grep -va | sort -r > result.txt` scrive l'output finale in un file. Per visualizzare l'output a schermo e salvarlo contemporaneamente, reindirizzalo al comando `tee`.

Il comando grep cerca all'interno dei file righe che corrispondono a un determinato modello di testo. Il comando find, invece, individua file e directory in base a nome, dimensione, tipo o data. In breve, grep analizza il contenuto dei file, mentre find cerca i file nell'intera struttura delle directory.

Il comando tee legge da una pipe e scrive i dati sia a schermo che in uno o più file contemporaneamente, ad esempio grep error log | tee errors.txt. Consente di salvare l'output intermedio senza interrompere la pipeline.

Gli assistenti basati sull'intelligenza artificiale possono suggerire la sequenza corretta di comandi in pipeline a partire da una richiesta in linguaggio naturale, spiegare flag grep o sort sconosciuti e individuare errori in una pipeline. Gli strumenti di apprendimento automatico analizzano anche l'output dei log in pipeline per segnalare anomalie che un filtraggio manuale non riuscirebbe a rilevare.

Sì. Le serrature scorrevoli portatili e i catenacci a superficie possono essere usati per mettere in sicurezza una porta a scomparsa dall'esterno. Alcuni kit con catena di sicurezza consentono anche il bloccaggio esterno con chiave o manopola girevole. Copilota GitHub È possibile generare pipeline che combinano i comandi cat, grep e sort a partire da un breve commento che descrive le proprie esigenze, completando i comandi man mano che si digita. RevEsaminate le pipeline suggerite confrontandole con i dati di esempio, in particolare le opzioni che riordinano o eliminano le righe.

Riassumi questo post con: