Tips & Tricks: head e tail per estrarre contenuti da un file di testo | SolutionCAFE IT

Tips & Tricks: head e tail per estrarre contenuti da un file di testo

Tips & Tricks: head e tail per estrarre contenuti da un file di testo

1920 1280 Nicola Montemurro

Tips & Tricks del giorno.

A volte, potrebbe essere necessario conoscere il contenuto di una specifica riga oppure un intervallo di righe di un file testo senza doverlo aprire con un editor, soprattutto se l’operazione deve essere fatta in modo non interattivo; la soluzione di usare head e tail combinati si dimostra essere utile soprattutto nel caso in cui il file in questione sia di grandi dimensioni.

Preparare il file da utilizzare per le prove, contenente un numero arbitrario di righe (in questo caso 100).

root@kali:~# for i in $(seq 1 1 100); do echo "Line number $i" >> test.txt; done

Verificare il contenuto del file, appena creato.

root@kali:~# cat test.txt

Line number 1
Line number 2
Line number 3
.....
Line number 98
Line number 99
Line number 100

Gestire lo stream di dati, partendo dall'alto

Per visualizzare una specifica riga (es. riga 15):

Attraverso la pipeline , si procedera’ a ridurre, sempre di più il numero di righe necessario, fino ad ottenere il risultato aspettato; Lo stream del file contenente 100 righe, generato dal comando cat, sara’ inviato, al comando head, che attraverso l’opzione -15, considerera’ solo le prime 15 righe; sara’, poi, inviato al comando tail, che attraverso l’opzione -1 considerera’ solo la prima riga, dal basso, l’ultima dello stream, di 15 righe, ricevuto da head, che sara’, quindi, inviata, in questo caso, alla console o terminale per essere visualizzato (Line number 15).

root@kali:~# cat test.txt | head -15 |tail -1
Line number 15

Per un range di righe specifico (es dalla riga 37 alla riga 39), digitare:

root@kali:~# cat test.txt | head -39 |tail -3
Line number 37
Line number 38
Line number 39

Gestire lo stream di dati, partendo dal basso

Questo metodo, è sicuramente controintuitivo, ma potrebbe rivelarsi essere utile nel caso il file contenesse molte righe (milioni) e l’informazione di cui avete bisogno, potrebbe risiedere verso il fondo, in pratica nella seconda metà del file per evitare di produrre uno stream da tutto il file inutilmente.

Il questo caso, abbiamo bisogno di avere una informazione aggiuntiva; contando dall’alto, la prima riga del file è la riga uno (1), per contare dal basso, occorre, quindi, conoscere il numero dell’ultima riga del file.

root@kali:~# cat test.txt |wc -l
100

Conoscendo, che il file è composto da 100 righe per estrarre la riga 90 digitare:

root@kali:~# cat test.txt |tail -11| head -1
Line number 90

Per un range di righe specifico (es dalla 75 alla 79) digitare:

root@kali:~# cat test.txt |tail -26| head -5
Line number 75
Line number 76
Line number 77
Line number 78
Line number 79

Considerazioni finali

In questo articolo abbiamo esplorato l’uso essenziale dei comandi Linux head e tail,  svelandone le funzionalità, le applicazioni e le sinergie, nel conteggio delle righe di file di testo; vi invito ad approfondire questi comandi e a sperimentare gli esempi fin qui visti per sfruttare tutto il loro potenziale.

Nicola Montemurro

Nicola Montemurro un Consulente IT specializzato in sicurezza e resilienza infrastrutturale, Windows, Linux, VMWare, CCNA

Tutte le storie di:Nicola Montemurro

    Preferenze Privacy

    Quando visiti il nostro sito web, possono essere memorizzate alcune informazioni, di servizi specifici, tramite il tuo browser, di solito sotto forma di cookie. Qui puoi modificare le tue preferenze sulla privacy. Il blocco di alcuni cookie può influire sulla tua esperienza sul nostro sito Web e sui servizi che offriamo.

    Click to enable/disable Google Analytics tracking code.
    Click to enable/disable Google Fonts.
    Click to enable/disable Google Maps.
    Click to enable/disable video embeds.
    Il nostro sito web utilizza cookie, principalmente di terze parti. Personalizza le preferenze sulla privacy e/o acconsenti all'utilizzo dei cookie.