Il comando "Awk" di Linux è una potente utilità per diverse operazioni su file di testo come la ricerca, la sostituzione e la stampa. È facile da usare con dati tabulari perché divide automaticamente ogni riga in campi o colonne in base al separatore di campo. Quando si lavora con un file di testo che contiene dati tabulari e si desidera stampare i dati di una colonna particolare, il comando 'awk' è l'opzione migliore. In questo tutorial, ti mostreremo come stampare la prima colonna e/o l'ultima colonna di una riga o un file di testo.
Stampa la prima colonna e/o l'ultima colonna di un comando output
Molti comandi Linux come il comando "LS" generano uscite tabulari. Qui, ti mostreremo come stampare la prima colonna e/o l'ultima colonna dall'output del comando 'ls -l'.
Esempio 1: stampare la prima colonna di un comando output
Il seguente comando "awk" stamperà la prima colonna dall'output del comando "LS -l".
$ ls -l
$ ls -l | awk 'stampa $ 1'
Il seguente output verrà prodotto dopo aver eseguito i comandi sopra.
Esempio 2: stampare l'ultima colonna di un comando output
Il seguente comando "awk" stamperà l'ultima colonna dall'output del comando "LS -l".
$ ls -l
$ ls -l | awk 'print $ nf'
Il seguente output verrà prodotto dopo aver eseguito i comandi sopra.
Esempio 3: stampare la prima e le ultime colonne di un comando output
Il seguente comando "awk" stamperà la prima e le ultime colonne dall'output del comando "ls -l".
$ ls -l
$ ls -l | awk 'stampa $ 1, $ nf'
Il seguente output verrà prodotto dopo aver eseguito i comandi sopra.
Stampa la prima colonna e/o l'ultima colonna di un file di testo
Qui, ti mostreremo come utilizzare il comando 'awk' per stampare la prima colonna e/o l'ultima colonna di un file di testo.
Crea un file di testo
Per seguire questo tutorial, crea un file di testo chiamato clienti.TXT Con i seguenti contenuti. Il file contiene tre tipi di dati dei clienti: nome con ID, e -mail e numero di telefono. Il carattere tab (\ t) viene utilizzato per separare questi valori.
Nome del telefono e -mailEsempio 4: stampare la prima colonna di un file senza utilizzare un separatore di campo
Se non viene utilizzato alcun separatore di campo nel comando "AWK", viene utilizzato uno spazio come separatore di campo predefinito. Il seguente comando "awk" stamperà la prima colonna utilizzando il separatore predefinito.
Clienti da $ Cat.TXT
$ awk 'stampa $ 1' clienti.TXT
Il seguente output verrà prodotto dopo aver eseguito i comandi sopra. Si noti che l'output mostra solo il nome del cliente perché lo spazio viene applicato come separatore di campo. La soluzione a questo problema è mostrata nel prossimo esempio.
Esempio 5: stampare la prima colonna di un file con un delimitatore
Qui, \ t viene utilizzato come separatore di campo per stampare la prima colonna del file. L'opzione '-f' viene utilizzata per impostare il separatore di campo.
Clienti da $ Cat.TXT
$ awk -f '\ t' 'stampa $ 1 ".TXT
Il seguente output verrà prodotto dopo aver eseguito i comandi sopra. Il contenuto del file è diviso in tre colonne in base a \ t. Pertanto, il nome e l'ID del cliente sono stampati come prima colonna. Se si desidera stampare il nome del cliente senza l'ID, continua all'esempio successivo.
Se si desidera stampare il nome del cliente senza l'ID, allora devi usare "-come separatore di campo. Il seguente comando "awk" stamperà il nome del cliente solo come la prima colonna.
Clienti da $ Cat.TXT
$ awk -f ' -' 'stampa $ 1 ".TXT
Il seguente output verrà prodotto dopo aver eseguito i comandi sopra. L'output include i nomi completi dei clienti senza i loro ID.
Esempio 6: stampare l'ultima colonna di un file
Il seguente comando "awk" stamperà l'ultima colonna di clienti.TXT. Poiché nel comando non viene utilizzato alcun separatore di campo, lo spazio verrà utilizzato come separatore di campo.
Clienti da $ Cat.TXT
$ awk 'print $ nf' clienti.TXT
Il seguente output verrà prodotto dopo aver eseguito i comandi sopra. L'ultima colonna contiene numeri di telefono, come mostrato nell'output.
Esempio 7: stampare la prima e le ultime colonne di un file
Il seguente comando "awk" stamperà la prima e le ultime colonne di clienti.TXT. Qui, la tab (\ t) viene utilizzata come separatore di campo per dividere il contenuto in colonne. Qui, la tab (\ t) viene utilizzata come separatore per l'output.
Clienti da $ Cat.TXT
$ awk -f "\ t" 'print $ 1 "\ t" $ nf' clienti.TXT
La seguente output apparirà dopo aver eseguito i comandi sopra. Il contenuto è diviso in tre colonne di \ t; La prima colonna contiene il nome e l'ID del cliente e la seconda colonna contiene il numero di telefono. Le prime e le ultime colonne vengono stampate usando \ t come separatore.
Conclusione
Il comando 'AWK' può essere applicato in diversi modi per ottenere la prima colonna e/o l'ultima colonna da qualsiasi output del comando o da dati tabulari. È importante notare che nel comando è richiesto un separatore di campo e, se uno non viene fornito, viene utilizzato lo spazio.