Cos'è l'AWKNF?

Cos E L Awknf



Il linguaggio di scripting AWK ha anche una serie di variabili speciali integrate per servire alcuni scopi predefiniti. Una di queste variabili integrate è 'NF' che ha una propria funzionalità predefinita. Questo articolo esplorerà lo scopo di questa variabile AWK incorporata dimostrando alcuni esempi rilevanti in Ubuntu 20.04.

AWK NF in Ubuntu 20.04:

La variabile AWK “NF” viene utilizzata per stampare il numero di campi in tutte le righe di qualsiasi file fornito. Questa variabile incorporata scorre tutte le righe del file una per una e stampa il numero di campi separatamente per ogni riga. Per comprendere bene questa funzionalità, dovrai leggere gli esempi discussi di seguito.

Esempi per dimostrare l'utilizzo di AWK NF in Ubuntu 20.04:

I seguenti quattro esempi sono stati progettati in modo da insegnarti l'uso di AWK NF in un modo molto facile da capire. Tutti questi esempi sono stati implementati utilizzando il sistema operativo Ubuntu 20.04.







Esempio n. 1: stampa il numero di campi da ciascuna riga di un file di testo:

In questo esempio, volevamo stampare il numero di campi o colonne di ogni riga o riga o record di un file di testo in Ubuntu 20.04. Per mostrarti il ​​metodo per farlo, abbiamo creato il file di testo mostrato nell'immagine qui sotto. Questo file di testo contiene i tassi di mele per chilogrammo provenienti da cinque diverse città del Pakistan.





Dopo aver creato questo file di testo di esempio, abbiamo eseguito il seguente comando per stampare il numero di campi da ciascuna riga di questo file di testo nel nostro terminale:





$ awk ' { stampa NF } ' AppleRates.txt

In questo comando, abbiamo la parola chiave 'awk' che mostra che stiamo eseguendo un comando AWK seguito dall'istruzione 'print NF' che ripeterà semplicemente ogni riga del file di testo di destinazione e stamperà il numero di campi separatamente per ciascuno riga del file di testo. Infine, abbiamo il nome di quel file di testo (i cui campi vanno contati) che nel nostro caso è “AppleRatest.txt”.



Poiché avevamo esattamente lo stesso numero di campi per tutte e cinque le righe del nostro file di testo, ovvero 2, lo stesso numero viene stampato come numero di campi per tutte le righe del file di testo a causa dell'esecuzione di questo comando. Questo può essere visto dall'immagine qui sotto:

Esempio n. 2: stampa il numero di campi da ciascuna riga di un file di testo in modo presentabile:

L'output mostrato nell'esempio discusso sopra può anche essere presentato bene visualizzando i numeri di riga e il numero di campi di ciascuna riga del file di testo. Inoltre, possiamo anche separare i numeri di riga dal numero di campi con qualsiasi carattere speciale a nostra scelta. Useremo lo stesso file di testo che abbiamo usato per il nostro primo esempio per mostrartelo. Tuttavia, il nostro comando da eseguire in questo caso sarà leggermente diverso ed è il seguente:

$ awk ' { stampa NR, “---”, NF } ' AppleRates.txt

In questo comando, abbiamo introdotto la variabile AWK incorporata 'NR' che stamperà semplicemente i numeri di riga di tutte le righe del nostro file di testo di destinazione. Inoltre, abbiamo utilizzato tre trattini, '—' come carattere speciale per separare i numeri di riga dal numero di campi del nostro file di testo fornito.

Questo output leggermente modificato dello stesso file di testo è mostrato nell'immagine qui sotto:

Esempio n. 3: stampa il primo e l'ultimo campo da ciascuna riga di un file di testo:

Oltre a contare solo il numero di campi di tutte le righe di un file di testo fornito, la variabile speciale 'NF' di AWK può essere utilizzata anche per estrarre i valori effettivi dell'ultimo campo dal file di testo fornito. Ancora una volta, abbiamo usato lo stesso file di testo che abbiamo usato per i nostri primi due esempi. Tuttavia, in questo esempio vogliamo stampare i valori effettivi del primo e dell'ultimo campo del nostro file di testo. Per questo, abbiamo eseguito il seguente comando:

$ awk ' { Stampa $1 , $NF } ' AppleRates.txt

La parola chiave 'awk' è seguita dall'istruzione 'print $1, $NF' in questo comando. La variabile speciale “$1” è stata utilizzata per stampare i valori del primo campo o della prima colonna del nostro file di testo fornito, mentre la variabile AWK “$NF” è stata utilizzata per stampare i valori dell'ultimo campo o dell'ultima colonna del nostro file di testo di destinazione. Devi notare qui che quando usiamo la variabile AWK 'NF' così com'è, viene usata per contare il numero di campi di ogni riga; tuttavia, quando viene utilizzato con il simbolo del dollaro '$', estrarrà semplicemente i valori effettivi dall'ultimo campo del file di testo fornito. Il resto del comando è più o meno uguale a quello dei comandi che sono stati usati per i primi due esempi.

Nell'output mostrato di seguito, puoi vedere che i valori effettivi del primo e dell'ultimo campo del nostro file di testo fornito sono stati stampati sul terminale. Puoi vedere che questo output è praticamente simile all'output del comando 'cat' solo perché avevamo solo due campi nel nostro file di testo fornito; quindi, in un certo senso, il contenuto di tutto il nostro file di testo è stato stampato sul terminale come risultato dell'esecuzione del suddetto comando.

Esempio n. 4: separare i record con campi mancanti in un file di testo:

A volte, ci sono alcuni record in un file di testo con alcuni campi mancanti e potresti voler separare quei record da quelli che sono completi in ogni aspetto. Questo può essere fatto anche usando la variabile AWK “NF”. Per questo, abbiamo creato un file di testo denominato 'ExamMarks.txt' che contiene i punteggi degli esami di cinque diversi studenti in tre diversi esami insieme ai loro nomi. Tuttavia, per il terzo esame, alcuni degli studenti erano assenti a causa dei quali mancavano i loro punteggi. Questo file di testo è il seguente:

Per distinguere i record con i campi mancanti dai record con i campi completi, eseguiremo il comando riportato di seguito:

$ awk ' { stampa NR, “--- > ”, N.F } ' ExamMarks.txt

Questo comando è lo stesso che abbiamo usato per il nostro secondo esempio. Tuttavia, dall'output di questo comando mostrato nell'immagine seguente, puoi vedere che il primo e il quarto record sono completi, mentre il secondo, il terzo e il quinto record contengono campi mancanti.

Conclusione:

Lo scopo di questo articolo era spiegare l'uso della variabile speciale AWK 'NF'. Abbiamo prima discusso brevemente di come funziona questa variabile e, successivamente, abbiamo elaborato bene questo concetto con l'aiuto di quattro diversi esempi. Una volta compresi bene tutti gli esempi condivisi, sarà possibile utilizzare la variabile AWK “NF” per contare il numero totale di campi e stampare i valori effettivi dell'ultimo campo del file fornito.