Utilizzando il comando awk per stampare l'ultima colonna da un file

Utilizzando il comando awk per stampare l'ultima colonna da un file

A volte arriva una situazione in cui non abbiamo bisogno di leggere il file completo, abbiamo solo bisogno di una parte del file da visualizzare. In questa situazione, cerchiamo di trovare alcuni modi efficienti per ottenerli senza passare attraverso l'intero contenuto del file. Il comando "awk" è quello.

Il comando "AWK" è un'utilità della riga di comando utilizzata in Linux per condurre ricerche con modelli diversi e per l'elaborazione. È un comando che consente a un programmatore di codificare piccole ma efficienti linee di codice sotto forma di dichiarazioni che avviano schemi di testo utilizzati per condurre ricerche in ogni parte di un documento. Quindi, è anche un comando gran parte per l'elaborazione del testo.

Con l'aiuto del comando "AWK", un programmatore può raccogliere dati e pezzi di un testo specifico in base al modello fornito al comando. Il comando awk può scansionare e cercare file riga per riga, distribuire e partizione ogni riga passata come input in campi, confrontare e abbinare i campi con le linee di input ed eseguire le istruzioni specificate dal programmatore su righe corrispondenti. I comandi AWK possono essere utilizzati per la produzione di report in formati specifici e per la modifica dei dati all'interno dei file.

Sintassi:

Di seguito è riportata la sintassi del comando AWK:

awk 'action' your_file_name.TXT

In questo comando, il parametro "azione" nella sintassi viene utilizzato per definire l'azione che il nostro comando sarà di eseguire. Dopodiché, passeremo il nome del nostro file come parametro su cui operemo.

Esempio n. 1:

In questo esempio, proveremo a stampare l'ennesimo o l'ultima colonna del file usando il comando AWK. Creiamo innanzitutto un nuovo file che contiene alcuni dati relativi ai dipendenti. Per creare un nuovo file, eseguiremo il comando di seguito:

Linux@linux-virtualbox: ~ $ touch dipendente.TXT

Dopo aver eseguito il comando sopra, creerà un nuovo file nella nostra home directory. Non è necessario creare un file nella directory home puoi crearlo ovunque nel sistema. Ora controlleremo se il file è creato o meno. Per questo, controlleremo semplicemente la home directory. Come mostrato nello snippet di seguito, abbiamo creato un nuovo file denominato dipendente.TXT.

Ora aggiungeremo alcuni contenuti al file usando un blocco note, come mostrato nello snippet di seguito. Abbiamo aggiunto i dati di cinque dipendenti che includono il nome, la designazione e lo stipendio del dipendente. I dati sono mostrati di seguito che vengono archiviati nel file "dipendente.TXT".

Stipendio di designazione del nome
Jhone Manager $ 142
Rick Assistant $ 543
Linda Designer $ 148
Alex Proj Manager $ 342

Ora, il file viene creato correttamente con il contenuto e per ottenere l'ultima colonna del file utilizzando il comando AWK. Per questo, eseguiremo il comando menzionato di seguito:

Linux@linux-virtualbox: ~ $ awk 'print $ nf'.TXT

Nel comando sopra, abbiamo superato l'istruzione di stampa insieme alla parola chiave "$ nf", il che significa che il comando awk indicherà al compilatore di stampare il "$ nf" che indica l'ennesimo campo del file. L'ultimo "dipendente.txt ”è il nome del file la cui ultima colonna verrà stampata. Premendo il tasto Invio, eseguiremo il comando su cui viene generato l'output di seguito sul terminale in cui viene visualizzato lo stipendio dei dipendenti.

stipendio
$ 142
$ 543
$ 148
$ 342

Esempio n. 2:

In questo esempio, leggeremo l'ultima colonna del file ma questa volta stiamo usando un altro metodo che viene utilizzato principalmente quando il numero di colonne è noto dall'utente. Ora, creiamo prima un nuovo file che contiene i dati di cinque studenti. Include il nome degli studenti, le loro lezioni e i segni che hanno ottenuto.

Linux@linux-virtualbox: ~ $ nano studente.TXT

Quando eseguiamo il comando sopra, creerà un nuovo file e lo aprirà automaticamente in un editor di testo. Ora aggiungeremo i dati degli studenti nel file e premendo "Ctrl + X". Salveremo il file dopo aver aggiunto il contenuto ad esso. Nel nostro caso, abbiamo aggiunto dati di cinque studenti. Salvando il file, ci sposteremo verso il nostro obiettivo principale che è stampare l'ultima colonna del file. Di seguito è riportato il contenuto del file "Studente.TXT".

Nome dei segni di classe
Jhone Gradec 154
Rick Gradea 124
Linda GradeB 144
Alex Gradea 122

Ora eseguiremo il comando awk per stampare l'ultima colonna del file. Supponiamo che questa volta conosciamo le colonne del file e vogliamo stamparne l'ultima colonna. Per questo, useremo il comando awk insieme al numero di colonna che verrà stampato sul terminale. Come sappiamo che ci sono solo tre colonne nel nostro file che sono il nome degli studenti, le loro lezioni e i segni. Per stampare l'ultima colonna, eseguiremo il comando di seguito:

Linux@linux-virtualbox: ~ $ awk 'stampa $ 3' Studente.TXT

In questo comando, abbiamo superato "$ 3" insieme al comando di stampa che significa "awk" indicerà al compilatore di stampare la terza colonna del file denominato "studente.TXT". Quando eseguiamo questo comando, stamperà il seguente output in cui vengono stampati i segni degli studenti. Possiamo anche confrontare l'output con lo snippet del file che viene visualizzato sopra. Il file contiene solo tre colonne e l'ultima colonna del file contiene i segni degli studenti. Questo comando può essere utilizzato per stampare qualsiasi colonna del file; non è solo specificato per stampare l'ultima colonna. Modificando il segno "$ 3" in "$ 2", possiamo stampare la seconda colonna. Dopo aver eseguito il comando sopra, riceveremo l'output visualizzato di seguito.

Segni
154
124
144
122

Conclusione

Abbiamo studiato un comando "awk" ampiamente utilizzato per colpire direttamente il contenuto del file necessario. Quindi, abbiamo implementato più esempi per leggere l'ultima colonna specificata dei file utilizzando il comando AWK. Puoi implementare più esempi per avere un'idea migliore di come si può usare il comando awk.