Ricerca nel sito web

Scopri come utilizzare le variabili integrate di Awk - Parte 10


Mentre scopriamo la sezione delle funzionalità di Awk, in questa parte della serie, esamineremo il concetto di variabili integrate in Awk. Ci sono due tipi di variabili che puoi usare in Awk, questi sono; Variabili definite dall'utente, di cui abbiamo parlato nella Parte 8 e variabili incorporate.

Le variabili incorporate hanno valori già definiti in Awk, ma possiamo anche modificare attentamente tali valori, le variabili integrate includono:

  1. FILENAME: nome del file di input corrente (non modificare il nome della variabile)
  2. FR : numero della riga di input corrente (ovvero la riga di input 1, 2, 3... così via, non modificare il nome della variabile)
  3. NF: numero di campi nella riga di input corrente (non modificare il nome della variabile)
  4. OFS: separatore del campo di output
  5. FS: separatore del campo di input
  6. ORS: separatore del record di output
  7. RS: separatore del record di input

Procediamo ad illustrare l'uso di alcune delle variabili integrate di Awk sopra:

Per leggere il nome del file di input corrente, puoi utilizzare la variabile incorporata FILENAME come segue:

awk ' { print FILENAME } ' ~/domains.txt 

Ti renderai conto che il nome del file viene stampato per ogni riga di input, questo è il comportamento predefinito di Awk quando usi la variabile incorporata FILENAME.

Utilizzando NR per contare il numero di righe (record) in un file di input, ricorda che conta anche le righe vuote, come vedremo nell'esempio seguente.

Quando visualizziamo il file domains.txt utilizzando il comando cat, contiene 14 righe con testo e 2 righe vuote:

cat ~/domains.txt

awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt 

Per contare il numero di campi in un record o in una riga, utilizziamo la variabile incorporata NR come segue:

cat ~/names.txt

awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt

Successivamente, puoi anche specificare un separatore del campo di input utilizzando la variabile incorporata FS, che definisce come Awk divide le righe di input in campi.

Il valore predefinito per FS è spazio e tab, ma possiamo modificare il valore di FS con qualsiasi carattere che ordinerà ad Awk di dividere le linee di input di conseguenza.

Esistono due metodi per farlo:

  1. un metodo è utilizzare la variabile incorporata FS
  2. e il secondo è invocare l'opzione -F Awk

Considera il file /etc/passwd su un sistema Linux, i campi in questo file sono divisi utilizzando il carattere :, quindi possiamo specificarlo come nuovo separatore del campo di input quando vogliamo filtrare alcuni campi come nei seguenti esempi:

Possiamo usare l'opzione -F come segue:

awk -F':' '{ print $1, $4 ;}' /etc/passwd

Facoltativamente, possiamo anche sfruttare la variabile incorporata FS come di seguito:

awk ' BEGIN {  FS=“:” ; }  { print $1, $4  ; } ' /etc/passwd

Per specificare un separatore di campo di output, utilizza la variabile integrata OFS, definisce come i campi di output verranno separati utilizzando il carattere che utilizziamo come nell'esempio seguente:

awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd

In questa Parte 10, abbiamo esplorato l'idea di utilizzare variabili integrate di Awk dotate di valori predefiniti. Ma possiamo anche cambiare questi valori, anche se non è consigliabile farlo a meno che tu non sappia cosa stai facendo, con un'adeguata comprensione.

Dopodiché procederemo spiegando come possiamo utilizzare le variabili di shell nelle operazioni di comando di Awk, quindi rimani connesso a Tecmint.