Come faccio a trovare l'ennesima riga in un file nella riga di comando di Linux? Come faccio a visualizzare il numero di riga x sul numero di riga y?
In Linux, ci sono diversi modi per ottenere lo stesso risultato. La stampa di righe specifiche da un file non fa eccezione.
Per visualizzare la 13a riga, puoi utilizzare una combinazione di testa e coda:
head -13 file_name | tail +13
Oppure puoi usare il comando sed:
sed -n '13p' file.txt
Per visualizzare i numeri di riga da 20 a 25, puoi combinare i comandi di testa e coda in questo modo:
head -25 file_name | tail +20
Oppure puoi usare il comando sed in questo modo:
sed -n '20,25p' lines.txt
Segue una spiegazione dettagliata di ciascun comando. Mostrerò anche l'uso del comando awk per questo scopo.
Visualizza linee specifiche usando i comandi di testa e coda
Questo è il mio modo preferito di visualizzare le linee di scelta. Lo trovo più facile da ricordare e da usare.
Stampa una singola riga specifica
Usa una combinazione di comando testa e coda nella seguente funzione il numero di riga x:
head -x file_name | tail +x
È possibile sostituire x con il numero di riga che si desidera visualizzare. Quindi, supponiamo che tu voglia visualizzare la 13a riga del file.
[email protected]:~$ head -13 lines.txt | tail +13
This is line number 13
Spiegazione :Probabilmente sai già che il comando head ottiene le righe di un file dall'inizio mentre il comando tail ottiene le righe dalla fine.
La parte "head -x" del comando otterrà le prime x righe dei file. Quindi reindirizzerà questo output al comando tail. Il comando tail visualizzerà tutte le righe a partire dalla riga numero x.
Ovviamente, se prendi 13 righe dall'alto, le righe che iniziano dal numero 13 fino alla fine saranno la 13a riga. Questa è la logica dietro questo comando.
Stampa un intervallo di righe specifico
Ora prendiamo la nostra combinazione di comandi head e tail per visualizzare più di una riga.
Supponiamo di voler visualizzare tutte le linee da x a y. Ciò include anche la riga x e y:
head -y lines.txt | tail +x
Facciamo un esempio pratico. Supponiamo di voler stampare tutte le righe dalla riga 20 alla 25:
[email protected]:~$ head -25 lines.txt | tail +20
This is line number 20
This is line number 21
This is line number 22
This is line number 23
This is line number 24
This is line number 25
Utilizza SED per visualizzare righe specifiche
Il potente comando sed fornisce diversi modi per stampare righe specifiche.
Ad esempio, per visualizzare la decima riga, puoi usare sed nel modo seguente:
sed -n '10p' file.txt
Il -n sopprime l'output mentre il comando p stampa righe specifiche. Leggi questa guida dettagliata SED per impararla e comprenderla in dettaglio.
Per visualizzare tutte le righe dalla riga numero x alla riga numero y, utilizzare questo:
[email protected]:~$ sed -n '3,7p' lines.txt
This is line number 3
This is line number 4
This is line number 5
This is line number 6
This is line number 7
Utilizza AWK per stampare righe specifiche da un file
Il comando awk potrebbe sembrare complicato e c'è sicuramente una curva di apprendimento coinvolta. Ma come sed, awk è anche abbastanza potente quando si tratta di modificare e manipolare i contenuti dei file.
[email protected]:~$ awk 'NR==5' lines.txt
This is line number 5
NR indica il 'numero di record corrente'. Per ulteriori informazioni, leggi la nostra guida dettagliata ai comandi AWK.
Per visualizzare tutte le righe da x a y, puoi usare il comando awk nel modo seguente:
[email protected]:~$ awk 'NR>=20 && NR<=25' lines.txt
This is line number 20
This is line number 21
This is line number 22
This is line number 23
This is line number 24
This is line number 25
Segue una sintassi simile alla maggior parte dei linguaggi di programmazione.
Spero che questo rapido articolo ti abbia aiutato a visualizzare righe specifiche di un file nella riga di comando di Linux. Se conosci qualche altro trucco per questo scopo, condividilo con il resto di noi nella sezione commenti.