{"id":3636,"date":"2026-07-16T15:57:15","date_gmt":"2026-07-16T13:57:15","guid":{"rendered":"https:\/\/rootmail.it\/courses\/lpic-1-exam-101-010-160-corso-completo-in-italiano\/lessons\/103-2-elaborare-flussi-di-testo-con-i-filtri\/"},"modified":"2026-07-20T21:56:54","modified_gmt":"2026-07-20T19:56:54","slug":"103-2-elaborare-flussi-di-testo-con-i-filtri","status":"publish","type":"lesson","link":"https:\/\/rootmail.it\/en\/courses\/lpic-1-exam-1-101-500-corso-completo-in-italiano\/lessons\/103-2-elaborare-flussi-di-testo-con-i-filtri\/","title":{"rendered":"103.2 Elaborare flussi di testo con i filtri"},"content":{"rendered":"<h2>103.2 Elaborare flussi di testo con i filtri<\/h2>\n<p>L&#8217;elaborazione del testo \u00e8 una delle attivit\u00e0 pi\u00f9 comuni nell&#8217;amministrazione dei sistemi Linux. File di log, configurazioni, report e output dei comandi vengono costantemente analizzati, filtrati e trasformati per ottenere le informazioni desiderate. GNU\/Linux mette a disposizione un ricco insieme di strumenti, spesso chiamati <strong>text filters<\/strong>, che permettono di leggere, selezionare, ordinare, confrontare e modificare flussi di testo direttamente dalla riga di comando. Questi comandi sono progettati per lavorare insieme e rappresentano uno dei punti di forza della filosofia Unix: creare strumenti semplici che svolgono un compito specifico e possono essere combinati per risolvere problemi complessi. In questa lezione imparerai a utilizzare i principali filtri di testo, comprendendone il funzionamento e scoprendo come combinarli per elaborare rapidamente grandi quantit\u00e0 di dati.<\/p>\n<blockquote>\n<p><strong> Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 fondamentale conoscere i principali filtri di testo GNU, tra cui <code>cat<\/code>, <code>head<\/code>, <code>tail<\/code>, <code>cut<\/code>, <code>paste<\/code>, <code>sort<\/code>, <code>uniq<\/code>, <code>tr<\/code>, <code>wc<\/code>, <code>nl<\/code>, <code>od<\/code>, <code>split<\/code> e <code>tee<\/code>, oltre a comprenderne l&#8217;utilizzo combinato mediante pipe e reindirizzamenti.<\/p>\n<\/blockquote>\n<hr \/>\n<h2>Obiettivi della lezione<\/h2>\n<p>Al termine di questa lezione sarai in grado di:<\/p>\n<ul>\n<li>comprendere il concetto di flusso di testo (text stream);<\/li>\n<li>utilizzare i principali filtri GNU per elaborare file e output dei comandi;<\/li>\n<li>visualizzare, ordinare, confrontare e trasformare dati testuali;<\/li>\n<li>estrarre informazioni specifiche da file di grandi dimensioni;<\/li>\n<li>combinare pi\u00f9 strumenti per realizzare elaborazioni efficienti dalla riga di comando.<\/li>\n<\/ul>\n<hr \/>\n<h2>Argomenti trattati<\/h2>\n<ul>\n<li>Introduzione ai flussi di testo.<\/li>\n<li>Visualizzazione del contenuto dei file.<\/li>\n<li>Filtri per selezionare e trasformare il testo.<\/li>\n<li>Ordinamento e rimozione dei duplicati.<\/li>\n<li>Conteggio di righe, parole e caratteri.<\/li>\n<li>Suddivisione e combinazione dei file di testo.<\/li>\n<li>Best practice nell&#8217;elaborazione dei flussi di testo.<\/li>\n<\/ul>\n<blockquote>\n<p><strong> Provalo subito<\/strong> Apri un terminale Linux e sperimenta i comandi mostrati durante la lezione utilizzando file di testo, log di sistema o l&#8217;output di altri comandi. Imparare a combinare i filtri GNU \u00e8 una delle competenze pi\u00f9 importanti per lavorare efficacemente in ambiente Linux.<\/p>\n<\/blockquote>\n<h2>103.2.1 Panoramica sui filtri di testo<\/h2>\n<p>Uno dei principi fondamentali della filosofia Unix \u00e8 la possibilit\u00e0 di combinare piccoli strumenti specializzati per svolgere operazioni complesse. I <strong>filtri di testo (text filters)<\/strong> rappresentano uno degli esempi migliori di questo approccio. Un filtro \u00e8 un programma che legge dati da uno <strong>standard input (stdin)<\/strong>, li elabora e restituisce il risultato sullo <strong>standard output (stdout)<\/strong>. In questo modo \u00e8 possibile concatenare pi\u00f9 comandi, facendo s\u00ec che l&#8217;output di uno diventi l&#8217;input del successivo. Questo meccanismo rende la shell estremamente potente e permette di elaborare rapidamente grandi quantit\u00e0 di dati senza dover creare file temporanei.<\/p>\n<blockquote>\n<p><strong> Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 importante comprendere il funzionamento di <strong>stdin<\/strong>, <strong>stdout<\/strong> e dei filtri di testo, poich\u00e9 costituiscono la base dell&#8217;utilizzo delle pipe (<code>|<\/code>) e dei reindirizzamenti.<\/p>\n<\/blockquote>\n<hr \/>\n<h3>Come funziona un filtro?<\/h3>\n<p>Un filtro segue generalmente questo schema:<\/p>\n<pre><code>Input (stdin) \u2192 Elaborazione \u2192 Output (stdout)\r\n<\/code><\/pre>\n<p>Il filtro riceve i dati in ingresso, li elabora e restituisce il risultato senza modificare direttamente il file originale. Ad esempio, il comando:<\/p>\n<pre><code>sort nomi.txt\r\n<\/code><\/pre>\n<p>legge il contenuto del file <code>nomi.txt<\/code>, ordina le righe in ordine alfabetico e visualizza il risultato sul terminale. Il file originale rimane invariato.<\/p>\n<hr \/>\n<h3>Standard Input e Standard Output<\/h3>\n<p>In Linux ogni programma dispone normalmente di tre flussi standard.<\/p>\n<table>\n<thead>\n<tr>\n<th>Flusso<\/th>\n<th>Descrizione<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>stdin<\/strong><\/td>\n<td>Dati ricevuti in ingresso dal programma.<\/td>\n<\/tr>\n<tr>\n<td><strong>stdout<\/strong><\/td>\n<td>Output normale prodotto dal programma.<\/td>\n<\/tr>\n<tr>\n<td><strong>stderr<\/strong><\/td>\n<td>Messaggi di errore prodotti dal programma.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>In questa lezione ci concentreremo principalmente su <strong>stdin<\/strong> e <strong>stdout<\/strong>. Lo <strong>stderr<\/strong> verr\u00e0 approfondito nella prossima lezione dedicata ai reindirizzamenti.<\/p>\n<hr \/>\n<h3>Combinare i filtri con le pipe<\/h3>\n<p>I filtri vengono spesso utilizzati insieme al simbolo della <strong>pipe (<code>|<\/code>)<\/strong>, che permette di collegare pi\u00f9 comandi. Ad esempio:<\/p>\n<pre><code>cat utenti.txt | sort\r\n<\/code><\/pre>\n<p>In questo caso:<\/p>\n<ol>\n<li><code>cat<\/code> legge il contenuto del file;<\/li>\n<li>la pipe (<code>|<\/code>) invia l&#8217;output al comando successivo;<\/li>\n<li><code>sort<\/code> ordina il testo ricevuto.<\/li>\n<\/ol>\n<p>Questo approccio consente di costruire elaborazioni molto potenti combinando strumenti semplici.<\/p>\n<blockquote>\n<p><strong> Da ricordare<\/strong> La pipe non salva i dati su disco, ma trasferisce direttamente l&#8217;output di un comando come input del comando successivo.<\/p>\n<\/blockquote>\n<hr \/>\n<h3>Perch\u00e9 utilizzare i filtri?<\/h3>\n<p>L&#8217;utilizzo dei filtri offre numerosi vantaggi:<\/p>\n<ul>\n<li>consente di elaborare rapidamente grandi quantit\u00e0 di testo;<\/li>\n<li>riduce la necessit\u00e0 di creare file temporanei;<\/li>\n<li>permette di combinare facilmente pi\u00f9 comandi;<\/li>\n<li>favorisce la scrittura di script semplici ed efficienti.<\/li>\n<\/ul>\n<p>Questa filosofia rappresenta uno dei principi fondamentali dei sistemi Unix e Linux.<\/p>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Preferisci sempre combinare piccoli strumenti tramite pipe anzich\u00e9 utilizzare un unico comando molto complesso. La filosofia Unix si basa proprio sulla collaborazione tra programmi semplici, ciascuno specializzato nello svolgere un compito specifico.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li>Un filtro legge dati da <strong>stdin<\/strong>, li elabora e scrive il risultato su <strong>stdout<\/strong>.<\/li>\n<li>I filtri non modificano normalmente il file sorgente.<\/li>\n<li>Le pipe (<code>|<\/code>) permettono di collegare pi\u00f9 comandi tra loro.<\/li>\n<li>I tre flussi standard sono <strong>stdin<\/strong>, <strong>stdout<\/strong> e <strong>stderr<\/strong>.<\/li>\n<li>I filtri costituiscono uno degli elementi fondamentali della filosofia Unix.<\/li>\n<\/ul>\n<h2>103.2.2 Visualizzare e concatenare il contenuto dei file<\/h2>\n<p>Uno dei compiti pi\u00f9 frequenti durante l&#8217;amministrazione di un sistema Linux consiste nel consultare rapidamente il contenuto dei file di testo. GNU\/Linux mette a disposizione diversi strumenti che consentono di visualizzare file normali e compressi direttamente dal terminale, senza dover utilizzare editor di testo.<\/p>\n<p>Il comando pi\u00f9 conosciuto \u00e8 <code>cat<\/code>, ma esistono anche utility specifiche per leggere file compressi nei formati pi\u00f9 diffusi, come <code>.gz<\/code>, <code>.bz2<\/code> e <code>.xz<\/code>.<\/p>\n<blockquote>\n<p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 importante conoscere il comando <code>cat<\/code> e le utility <code>zcat<\/code>, <code>bzcat<\/code> e <code>xzcat<\/code>, utilizzate per visualizzare il contenuto di file compressi senza doverli estrarre preventivamente.<\/p>\n<\/blockquote>\n<hr \/>\n<h3>Il comando <code>cat<\/code><\/h3>\n<p>Il comando <code>cat<\/code> (abbreviazione di <strong>concatenate<\/strong>) permette di visualizzare il contenuto di uno o pi\u00f9 file direttamente nel terminale.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>cat file.txt\r\n<\/code><\/pre>\n<p>Output:<\/p>\n<pre><code>Prima riga\r\nSeconda riga\r\nTerza riga\r\n<\/code><\/pre>\n<p>Il comando legge il file e ne visualizza il contenuto senza apportare alcuna modifica.<\/p>\n<hr \/>\n<h3>Concatenare pi\u00f9 file<\/h3>\n<p>Come suggerisce il nome, <code>cat<\/code> pu\u00f2 anche concatenare pi\u00f9 file e mostrarne il contenuto come un unico flusso di testo.<\/p>\n<p>Esempio:<\/p>\n<pre><code>cat file1.txt file2.txt\r\n<\/code><\/pre>\n<p>L&#8217;output mostrer\u00e0 prima il contenuto di <code>file1.txt<\/code> e successivamente quello di <code>file2.txt<\/code>.<\/p>\n<p>Questa funzionalit\u00e0 \u00e8 molto utile quando si desidera combinare rapidamente pi\u00f9 file di testo.<\/p>\n<hr \/>\n<h3>Visualizzare file compressi<\/h3>\n<p>Linux mette a disposizione utility dedicate per leggere il contenuto dei file compressi senza doverli decomprimere manualmente.<\/p>\n<p>Per archivi compressi con <strong>gzip<\/strong>:<\/p>\n<pre><code>zcat file.txt.gz\r\n<\/code><\/pre>\n<p>Per archivi compressi con <strong>bzip2<\/strong>:<\/p>\n<pre><code>bzcat file.txt.bz2\r\n<\/code><\/pre>\n<p>Per archivi compressi con <strong>xz<\/strong>:<\/p>\n<pre><code>xzcat file.txt.xz\r\n<\/code><\/pre>\n<p>Questi comandi estraggono il contenuto &#8220;al volo&#8221; e lo inviano direttamente allo standard output, lasciando invariato il file compresso.<\/p>\n<hr \/>\n<h3>Quando utilizzare questi comandi?<\/h3>\n<p>Questi strumenti risultano particolarmente utili per:<\/p>\n<ul>\n<li>consultare rapidamente file di configurazione;<\/li>\n<li>visualizzare file di log;<\/li>\n<li>leggere file compressi senza decomprimerli;<\/li>\n<li>combinare il contenuto di pi\u00f9 file in un unico flusso di testo.<\/li>\n<\/ul>\n<p>Poich\u00e9 producono output sullo <strong>stdout<\/strong>, possono essere facilmente combinati con altri filtri tramite le pipe.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>zcat access.log.gz | grep \"ERROR\"\r\n<\/code><\/pre>\n<p>Questo comando visualizza solo le righe contenenti la parola <code>ERROR<\/code> all&#8217;interno di un file di log compresso.<\/p>\n<blockquote>\n<p><strong>\ud83d\udccc Da ricordare<\/strong> Il comando <code>cat<\/code> \u00e8 ideale per file di piccole dimensioni. Per file molto lunghi \u00e8 generalmente preferibile utilizzare strumenti come <code>less<\/code> o <code>more<\/code>, che permettono una consultazione pagina per pagina.<\/p>\n<\/blockquote>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Utilizza <code>cat<\/code> per visualizzare rapidamente file di testo di dimensioni contenute o concatenare pi\u00f9 file. Quando lavori con file compressi, preferisci <code>zcat<\/code>, <code>bzcat<\/code> o <code>xzcat<\/code> per consultare il contenuto senza creare copie temporanee o occupare spazio disco.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li><code>cat<\/code> visualizza il contenuto di uno o pi\u00f9 file di testo.<\/li>\n<li>Il comando pu\u00f2 concatenare pi\u00f9 file in un unico flusso di output.<\/li>\n<li><code>zcat<\/code>, <code>bzcat<\/code> e <code>xzcat<\/code> permettono di leggere file compressi senza decomprimerli.<\/li>\n<li>Tutti questi comandi scrivono il risultato sullo <strong>stdout<\/strong> e possono essere combinati con altri filtri tramite le pipe.<\/li>\n<li>Per consultare file molto grandi \u00e8 preferibile utilizzare <code>less<\/code> o <code>more<\/code>.<\/li>\n<\/ul>\n<h2>103.2.3 Selezionare e modificare il testo<\/h2>\n<p>GNU\/Linux mette a disposizione numerosi strumenti per selezionare, ordinare, trasformare e modificare il contenuto dei file di testo. Questi comandi sono progettati per lavorare sui flussi di testo e possono essere facilmente combinati tra loro tramite le pipe, permettendo di realizzare elaborazioni anche molto complesse con poche istruzioni.<\/p>\n<p>In questa sezione analizzeremo alcuni dei filtri pi\u00f9 utilizzati nell&#8217;amministrazione dei sistemi Linux.<\/p>\n<blockquote>\n<p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 importante conoscere il funzionamento dei comandi <code>head<\/code>, <code>tail<\/code>, <code>cut<\/code>, <code>nl<\/code>, <code>sort<\/code>, <code>uniq<\/code>, <code>tr<\/code> e <code>sed<\/code>, comprendendone gli utilizzi pi\u00f9 comuni.<\/p>\n<\/blockquote>\n<hr \/>\n<h3>Visualizzare l&#8217;inizio e la fine di un file<\/h3>\n<p>I comandi <code>head<\/code> e <code>tail<\/code> consentono di visualizzare rispettivamente le prime e le ultime righe di un file.<\/p>\n<p>Per mostrare le prime cinque righe:<\/p>\n<pre><code>head -n 5 file.txt\r\n<\/code><\/pre>\n<p>Per mostrare le ultime dieci righe (valore predefinito):<\/p>\n<pre><code>tail file.txt\r\n<\/code><\/pre>\n<p>Oppure, per visualizzarne un numero specifico:<\/p>\n<pre><code>tail -n 20 file.txt\r\n<\/code><\/pre>\n<p>Questi strumenti sono particolarmente utili per consultare rapidamente file di log e file di grandi dimensioni.<\/p>\n<hr \/>\n<h3>Estrarre colonne di testo con <code>cut<\/code><\/h3>\n<p>Il comando <code>cut<\/code> permette di estrarre specifiche porzioni di ogni riga, utilizzando delimitatori o posizioni fisse.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>echo \"1:apple\" | cut -d: -f2\r\n<\/code><\/pre>\n<p>Output:<\/p>\n<pre><code>apple\r\n<\/code><\/pre>\n<p>In questo esempio:<\/p>\n<ul>\n<li><code>-d:<\/code> specifica il carattere separatore (<code>:<\/code>);<\/li>\n<li><code>-f2<\/code> indica di estrarre il secondo campo.<\/li>\n<\/ul>\n<hr \/>\n<h3>Numerare le righe con <code>nl<\/code><\/h3>\n<p>Il comando <code>nl<\/code> aggiunge un numero progressivo alle righe di un file.<\/p>\n<p>Esempio:<\/p>\n<pre><code>echo -e \"apple\\nbanana\" | nl\r\n<\/code><\/pre>\n<p>Output:<\/p>\n<pre><code>     1  apple\r\n     2  banana\r\n<\/code><\/pre>\n<p>Questo comando \u00e8 utile durante l&#8217;analisi di file di configurazione o codice sorgente.<\/p>\n<hr \/>\n<h3>Ordinare il contenuto con <code>sort<\/code><\/h3>\n<p>Il comando <code>sort<\/code> ordina le righe di un file o di un flusso di testo.<\/p>\n<p>Esempio:<\/p>\n<pre><code>echo -e \"banana\\napple\" | sort\r\n<\/code><\/pre>\n<p>Output:<\/p>\n<pre><code>apple\r\nbanana\r\n<\/code><\/pre>\n<p>Per impostazione predefinita l&#8217;ordinamento \u00e8 alfabetico crescente.<\/p>\n<hr \/>\n<h3>Eliminare righe duplicate con <code>uniq<\/code><\/h3>\n<p>Il comando <code>uniq<\/code> identifica o rimuove righe duplicate consecutive.<\/p>\n<p>Esempio:<\/p>\n<pre><code>echo -e \"apple\\napple\\nbanana\" | uniq\r\n<\/code><\/pre>\n<p>Output:<\/p>\n<pre><code>apple\r\nbanana\r\n<\/code><\/pre>\n<blockquote>\n<p><strong>\ud83d\udccc Da ricordare<\/strong> <code>uniq<\/code> elimina solo i duplicati consecutivi. Per ottenere un elenco completamente privo di duplicati \u00e8 comune combinarlo con <code>sort<\/code>:<\/p>\n<\/blockquote>\n<pre><code>sort file.txt | uniq\r\n<\/code><\/pre>\n<hr \/>\n<h3>Sostituire o eliminare caratteri con <code>tr<\/code><\/h3>\n<p>Il comando <code>tr<\/code> (translate) permette di sostituire o eliminare caratteri.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>echo \"hello\" | tr 'h' 'y'\r\n<\/code><\/pre>\n<p>Output:<\/p>\n<pre><code>yello\r\n<\/code><\/pre>\n<p>Pu\u00f2 essere utilizzato anche per convertire lettere minuscole in maiuscole:<\/p>\n<pre><code>echo \"linux\" | tr 'a-z' 'A-Z'\r\n<\/code><\/pre>\n<p>Output:<\/p>\n<pre><code>LINUX\r\n<\/code><\/pre>\n<hr \/>\n<h3>Modificare il testo con <code>sed<\/code><\/h3>\n<p>Il comando <code>sed<\/code> (<strong>Stream Editor<\/strong>) \u00e8 uno dei filtri pi\u00f9 potenti disponibili in Linux. Permette di cercare e sostituire testo direttamente all&#8217;interno di un flusso.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>echo \"apple\" | sed 's\/apple\/orange\/'\r\n<\/code><\/pre>\n<p>Output:<\/p>\n<pre><code>orange\r\n<\/code><\/pre>\n<p>Nell&#8217;esempio:<\/p>\n<ul>\n<li><code>s<\/code> indica l&#8217;operazione di sostituzione;<\/li>\n<li><code>apple<\/code> \u00e8 il testo da cercare;<\/li>\n<li><code>orange<\/code> \u00e8 il testo sostitutivo.<\/li>\n<\/ul>\n<p><code>sed<\/code> viene frequentemente utilizzato negli script Bash e nell&#8217;elaborazione automatica di file di configurazione.<\/p>\n<hr \/>\n<h3>Combinare pi\u00f9 filtri<\/h3>\n<p>Uno dei punti di forza di Linux consiste nella possibilit\u00e0 di combinare facilmente pi\u00f9 strumenti.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>cat utenti.txt | sort | uniq\r\n<\/code><\/pre>\n<p>In questo caso:<\/p>\n<ol>\n<li>il contenuto del file viene letto;<\/li>\n<li>le righe vengono ordinate alfabeticamente;<\/li>\n<li>i duplicati vengono eliminati.<\/li>\n<\/ol>\n<p>Questa filosofia di composizione dei comandi rappresenta uno dei principi fondamentali dei sistemi Unix.<\/p>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Preferisci sempre l&#8217;utilizzo di piccoli filtri specializzati piuttosto che strumenti complessi per semplici operazioni. Combinando correttamente comandi come <code>sort<\/code>, <code>uniq<\/code>, <code>cut<\/code> e <code>sed<\/code> \u00e8 possibile elaborare grandi quantit\u00e0 di dati in modo rapido, leggibile ed efficiente.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li><code>head<\/code> e <code>tail<\/code> mostrano rispettivamente l&#8217;inizio e la fine di un file.<\/li>\n<li><code>cut<\/code> estrae colonne o campi di testo.<\/li>\n<li><code>nl<\/code> numera le righe.<\/li>\n<li><code>sort<\/code> ordina il contenuto di un file.<\/li>\n<li><code>uniq<\/code> elimina o identifica righe duplicate consecutive.<\/li>\n<li><code>tr<\/code> sostituisce o elimina caratteri.<\/li>\n<li><code>sed<\/code> modifica e trasforma flussi di testo.<\/li>\n<li>Questi strumenti possono essere combinati mediante pipe per realizzare elaborazioni molto potenti.<\/li>\n<\/ul>\n<h2>103.2.4 Altri strumenti utili per l&#8217;elaborazione del testo<\/h2>\n<p>GNU\/Linux offre numerose utility dedicate all&#8217;analisi e alla manipolazione dei file di testo. Alcune consentono di verificare l&#8217;integrit\u00e0 dei dati, altre di unire o suddividere file, mentre altre ancora permettono di contare righe, parole e caratteri o visualizzare il contenuto dei file in modo pi\u00f9 efficiente.<\/p>\n<p>Questi strumenti sono ampiamente utilizzati nell&#8217;amministrazione dei sistemi e possono essere facilmente combinati con gli altri filtri gi\u00e0 studiati.<\/p>\n<blockquote>\n<p><strong>\ud83d\udca1 Exam Tip<\/strong> Per l&#8217;esame LPIC-1 \u00e8 importante conoscere i comandi <code>md5sum<\/code>, <code>sha256sum<\/code>, <code>sha512sum<\/code>, <code>od<\/code>, <code>paste<\/code>, <code>split<\/code>, <code>wc<\/code> e <code>less<\/code>, comprendendone gli utilizzi principali.<\/p>\n<\/blockquote>\n<hr \/>\n<h3>Verificare l&#8217;integrit\u00e0 dei file<\/h3>\n<p>I comandi <code>md5sum<\/code>, <code>sha256sum<\/code> e <code>sha512sum<\/code> calcolano l&#8217;<strong>hash<\/strong> di un file o di un flusso di testo.<\/p>\n<p>L&#8217;hash rappresenta un&#8217;impronta digitale del contenuto e viene utilizzato per verificare che un file non sia stato modificato o corrotto.<\/p>\n<p>Esempio:<\/p>\n<pre><code>echo \"apple\" | md5sum\r\n<\/code><\/pre>\n<p>Per un file:<\/p>\n<pre><code>sha256sum immagine.iso\r\n<\/code><\/pre>\n<p>Tra gli algoritmi disponibili:<\/p>\n<ul>\n<li><code>md5sum<\/code> \u2192 molto veloce, ma non pi\u00f9 considerato sicuro dal punto di vista crittografico;<\/li>\n<li><code>sha256sum<\/code> \u2192 oggi il pi\u00f9 utilizzato per verificare l&#8217;integrit\u00e0 dei file;<\/li>\n<li><code>sha512sum<\/code> \u2192 produce un hash pi\u00f9 lungo e offre un livello di sicurezza ancora maggiore.<\/li>\n<\/ul>\n<hr \/>\n<h3>Visualizzare i dati in formato ottale o esadecimale con <code>od<\/code><\/h3>\n<p>Il comando <code>od<\/code> (<strong>Octal Dump<\/strong>) visualizza il contenuto di un file in rappresentazioni alternative, come formato ottale, esadecimale o ASCII.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>od file.bin\r\n<\/code><\/pre>\n<p>Oppure, per una visualizzazione esadecimale:<\/p>\n<pre><code>od -x file.bin\r\n<\/code><\/pre>\n<p>Questo comando \u00e8 utile durante l&#8217;analisi di file binari e il debugging.<\/p>\n<hr \/>\n<h3>Unire file con <code>paste<\/code><\/h3>\n<p>Il comando <code>paste<\/code> combina le righe corrispondenti di due o pi\u00f9 file, affiancandole in colonne.<\/p>\n<p>Esempio:<\/p>\n<pre><code>paste file1.txt file2.txt\r\n<\/code><\/pre>\n<p>Se i file contengono:<\/p>\n<pre><code>file1.txt\r\n---------\r\nMario\r\nLuigi\r\n\r\nfile2.txt\r\n---------\r\nRoma\r\nMilano\r\n<\/code><\/pre>\n<p>L&#8217;output sar\u00e0:<\/p>\n<pre><code>Mario    Roma\r\nLuigi    Milano\r\n<\/code><\/pre>\n<hr \/>\n<h3>Suddividere file con <code>split<\/code><\/h3>\n<p>Il comando <code>split<\/code> divide un file di grandi dimensioni in pi\u00f9 parti.<\/p>\n<p>Ad esempio:<\/p>\n<pre><code>split -b 10K archivio.log parte_\r\n<\/code><\/pre>\n<p>In questo caso:<\/p>\n<ul>\n<li><code>-b 10K<\/code> indica una dimensione di 10 KB per ogni file;<\/li>\n<li><code>parte_<\/code> rappresenta il prefisso dei file generati.<\/li>\n<\/ul>\n<p>Questo comando \u00e8 particolarmente utile quando \u00e8 necessario trasferire file molto grandi o elaborarli separatamente.<\/p>\n<hr \/>\n<h3>Contare righe, parole e caratteri con <code>wc<\/code><\/h3>\n<p>Il comando <code>wc<\/code> (<strong>Word Count<\/strong>) permette di contare:<\/p>\n<ul>\n<li>righe;<\/li>\n<li>parole;<\/li>\n<li>caratteri;<\/li>\n<li>byte.<\/li>\n<\/ul>\n<p>Ad esempio, per contare il numero di righe di un file:<\/p>\n<pre><code>wc -l file.txt\r\n<\/code><\/pre>\n<p>Per ottenere tutte le informazioni disponibili:<\/p>\n<pre><code>wc file.txt\r\n<\/code><\/pre>\n<p>L&#8217;output mostra, nell&#8217;ordine:<\/p>\n<ul>\n<li>numero di righe;<\/li>\n<li>numero di parole;<\/li>\n<li>numero di byte.<\/li>\n<\/ul>\n<hr \/>\n<h3>Consultare file con <code>less<\/code><\/h3>\n<p>Il comando <code>less<\/code> permette di visualizzare file di testo molto grandi in modo interattivo.<\/p>\n<p>Esempio:<\/p>\n<pre><code>less file.log\r\n<\/code><\/pre>\n<p>A differenza di <code>cat<\/code>, <code>less<\/code> consente di:<\/p>\n<ul>\n<li>scorrere avanti e indietro nel file;<\/li>\n<li>ricercare testo;<\/li>\n<li>aprire file di grandi dimensioni senza caricarli completamente in memoria.<\/li>\n<\/ul>\n<p>Per uscire da <code>less<\/code> \u00e8 sufficiente premere il tasto <strong>q<\/strong>.<\/p>\n<blockquote>\n<p><strong>\ud83d\udccc Da ricordare<\/strong> <code>less<\/code> \u00e8 generalmente preferibile a <code>cat<\/code> quando si consultano file molto lunghi, come i log di sistema.<\/p>\n<\/blockquote>\n<hr \/>\n<h3>Best Practice<\/h3>\n<p>Utilizza <code>sha256sum<\/code> o <code>sha512sum<\/code> per verificare l&#8217;integrit\u00e0 dei file scaricati, preferisci <code>less<\/code> per consultare file di grandi dimensioni e sfrutta <code>wc<\/code> e <code>split<\/code> quando devi analizzare o suddividere grandi quantit\u00e0 di dati.<\/p>\n<hr \/>\n<h3>Riepilogo<\/h3>\n<ul>\n<li><code>md5sum<\/code>, <code>sha256sum<\/code> e <code>sha512sum<\/code> calcolano l&#8217;hash di file e dati.<\/li>\n<li><code>od<\/code> visualizza il contenuto dei file in formati alternativi.<\/li>\n<li><code>paste<\/code> unisce le righe corrispondenti di pi\u00f9 file.<\/li>\n<li><code>split<\/code> divide un file in parti pi\u00f9 piccole.<\/li>\n<li><code>wc<\/code> conta righe, parole, caratteri e byte.<\/li>\n<li><code>less<\/code> \u00e8 il visualizzatore ideale per file di grandi dimensioni.<\/li>\n<\/ul>\n<h2>\ud83d\udcda Riepilogo della lezione<\/h2>\n<p>In questa lezione hai scoperto come utilizzare i principali <strong>filtri di testo GNU\/Linux<\/strong> per visualizzare, selezionare, ordinare e trasformare informazioni direttamente dalla riga di comando. Hai imparato a elaborare flussi di testo sfruttando strumenti semplici ma estremamente potenti, progettati per essere combinati tra loro attraverso le pipe.<\/p>\n<p>Hai inoltre conosciuto utility dedicate alla verifica dell&#8217;integrit\u00e0 dei file, alla gestione di file compressi, alla suddivisione di grandi archivi e alla consultazione efficiente di file di grandi dimensioni.<\/p>\n<h3>Concetti principali<\/h3>\n<ul>\n<li>Hai compreso il funzionamento dei filtri di testo e il loro utilizzo sui flussi standard di input e output.<\/li>\n<li>Hai imparato a visualizzare il contenuto dei file con <code>cat<\/code> e dei file compressi con <code>zcat<\/code>, <code>bzcat<\/code> e <code>xzcat<\/code>.<\/li>\n<li>Hai utilizzato <code>head<\/code> e <code>tail<\/code> per consultare rapidamente l&#8217;inizio e la fine dei file.<\/li>\n<li>Hai imparato a estrarre dati con <code>cut<\/code>, numerare righe con <code>nl<\/code> e trasformare il testo con <code>tr<\/code> e <code>sed<\/code>.<\/li>\n<li>Hai ordinato dati con <code>sort<\/code> ed eliminato duplicati mediante <code>uniq<\/code>.<\/li>\n<li>Hai verificato l&#8217;integrit\u00e0 dei file utilizzando <code>md5sum<\/code>, <code>sha256sum<\/code> e <code>sha512sum<\/code>.<\/li>\n<li>Hai conosciuto strumenti aggiuntivi come <code>paste<\/code>, <code>split<\/code>, <code>wc<\/code>, <code>od<\/code> e <code>less<\/code>.<\/li>\n<\/ul>\n<blockquote>\n<p><strong>\ud83c\udfaf Obiettivo raggiunto<\/strong> Al termine di questa lezione sei in grado di elaborare efficacemente file e flussi di testo utilizzando i principali strumenti GNU\/Linux, combinandoli tra loro per risolvere rapidamente attivit\u00e0 di amministrazione e analisi dei dati.<\/p>\n<\/blockquote>\n<h3>Comandi da ricordare<\/h3>\n<table>\n<thead>\n<tr>\n<th>Comando<\/th>\n<th>Descrizione<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>cat<\/code><\/td>\n<td>Visualizza o concatena file di testo.<\/td>\n<\/tr>\n<tr>\n<td><code>zcat<\/code>, <code>bzcat<\/code>, <code>xzcat<\/code><\/td>\n<td>Visualizzano file compressi senza decomprimerli.<\/td>\n<\/tr>\n<tr>\n<td><code>head<\/code><\/td>\n<td>Mostra le prime righe di un file.<\/td>\n<\/tr>\n<tr>\n<td><code>tail<\/code><\/td>\n<td>Mostra le ultime righe di un file.<\/td>\n<\/tr>\n<tr>\n<td><code>cut<\/code><\/td>\n<td>Estrae colonne o campi di testo.<\/td>\n<\/tr>\n<tr>\n<td><code>nl<\/code><\/td>\n<td>Numera le righe di un file.<\/td>\n<\/tr>\n<tr>\n<td><code>sort<\/code><\/td>\n<td>Ordina il contenuto di un file.<\/td>\n<\/tr>\n<tr>\n<td><code>uniq<\/code><\/td>\n<td>Elimina o identifica righe duplicate.<\/td>\n<\/tr>\n<tr>\n<td><code>tr<\/code><\/td>\n<td>Sostituisce o elimina caratteri.<\/td>\n<\/tr>\n<tr>\n<td><code>sed<\/code><\/td>\n<td>Modifica e trasforma flussi di testo.<\/td>\n<\/tr>\n<tr>\n<td><code>md5sum<\/code>, <code>sha256sum<\/code>, <code>sha512sum<\/code><\/td>\n<td>Calcolano l&#8217;hash di file e dati.<\/td>\n<\/tr>\n<tr>\n<td><code>od<\/code><\/td>\n<td>Visualizza dati in formato ottale, esadecimale e altri formati.<\/td>\n<\/tr>\n<tr>\n<td><code>paste<\/code><\/td>\n<td>Unisce le righe corrispondenti di pi\u00f9 file.<\/td>\n<\/tr>\n<tr>\n<td><code>split<\/code><\/td>\n<td>Divide un file in parti pi\u00f9 piccole.<\/td>\n<\/tr>\n<tr>\n<td><code>wc<\/code><\/td>\n<td>Conta righe, parole, caratteri e byte.<\/td>\n<\/tr>\n<tr>\n<td><code>less<\/code><\/td>\n<td>Visualizza file di grandi dimensioni in modo interattivo.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote>\n<p><strong>\ud83d\udca1 Preparazione all&#8217;esame LPIC-1<\/strong> Prima di proseguire assicurati di conoscere il funzionamento dei principali filtri GNU\/Linux e di sapere quando utilizzare strumenti come <code>head<\/code>, <code>tail<\/code>, <code>cut<\/code>, <code>sort<\/code>, <code>uniq<\/code>, <code>tr<\/code>, <code>sed<\/code>, <code>wc<\/code> e <code>less<\/code>. Ricorda inoltre che la vera potenza di questi strumenti risiede nella possibilit\u00e0 di combinarli attraverso le pipe.<\/p>\n<\/blockquote>\n<hr \/>\n<h2>\u27a1\ufe0f Prossima lezione<\/h2>\n<p>Nella prossima lezione (<strong>103.3 Utilizzare stream, pipe e reindirizzamenti<\/strong>) approfondirai il funzionamento dei flussi standard di Linux (<code>stdin<\/code>, <code>stdout<\/code> e <code>stderr<\/code>) e imparerai a reindirizzare input e output, concatenare comandi con le pipe e creare elaborazioni sempre pi\u00f9 potenti direttamente dalla riga di comando.<\/p>\n<blockquote>\n<p><strong>\ud83d\udcd6 Materiale di approfondimento<\/strong> Consulta il PDF allegato alla lezione per esercitarti con laboratori guidati, scenari realistici e quiz di autovalutazione.<\/p>\n<\/blockquote>\n","protected":false},"comment_status":"open","ping_status":"closed","template":"","class_list":["post-3636","lesson","type-lesson","status-publish","has-post-thumbnail","hentry"],"uagb_featured_image_src":[],"uagb_author_info":{"display_name":"Rootmail Academy","author_link":"https:\/\/rootmail.it\/en\/author\/"},"uagb_comment_info":0,"uagb_excerpt":"103.2 Elaborare flussi di testo con i filtri L&#8217;elaborazione del testo \u00e8 una delle attivit\u00e0 pi\u00f9 comuni nell&#8217;amministrazione dei sistemi Linux. File di log, configurazioni, report e output dei comandi vengono costantemente analizzati, filtrati e trasformati per ottenere le informazioni desiderate. GNU\/Linux mette a disposizione un ricco insieme di strumenti, spesso chiamati text filters, che&hellip;","_links":{"self":[{"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/lesson\/3636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/lesson"}],"about":[{"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/types\/lesson"}],"replies":[{"embeddable":true,"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/comments?post=3636"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/media\/3674"}],"wp:attachment":[{"href":"https:\/\/rootmail.it\/en\/wp-json\/wp\/v2\/media?parent=3636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}