Come stampare un intervallo di colonne usando il comando `awk`

How Print Range Columns Using Awk Command



Il comando `awk` è uno dei tanti comandi che possono essere utilizzati per stampare un intervallo di colonne da dati tabulari in Linux. Il comando `awk` può essere usato direttamente dal terminale eseguendo il file di script `awk`. In questo tutorial, ti mostreremo come stampare un intervallo di colonne da dati tabulari.

Esempio 1: stampa un intervallo di colonne da un output di comando

Il seguente comando stamperà la seconda, la terza e la quarta colonna dall'output del comando, 'Ls -l '. Qui, i numeri di colonna sono indicati in modo esplicito, ma nell'esempio successivo viene mostrato un comando più efficiente per stampare lo stesso intervallo di colonne.







$ls -l | awk '{ stampa $2, $3, $4 }'

Il seguente output è prodotto dal comando precedente.





Esempio 2: stampare l'intervallo di colonne da un file utilizzando a per ciclo continuo

Per seguire questo esempio e gli altri esempi in questo tutorial, crea un file di testo chiamato contrassegni.txt con il seguente contenuto :





ID CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58

Il seguente comando `awk` stamperà le prime tre colonne di mark.txt. Il per loop viene utilizzato per stampare i valori delle colonne e il ciclo include tre passaggi. Il NF variabile indica il numero totale di campi o colonne del file.

$gattocontrassegni.txt
$awk '{per(i=1;i<=NF-1;i++) printf $i' '; print ''}'contrassegni.txt

Il seguente output verrà prodotto eseguendo il comando. L'output mostra lo studente ID e i segni per CSE203 e CSE102 .



Esempio 3: stampa l'intervallo di colonne definendo le variabili iniziali e finali

Il seguente comando `awk` stamperà le prime tre colonne dall'output del comando 'ls -l' inizializzando il di partenza e fine variabili. Qui, il valore di di partenza variabile è 1 e il valore di fine variabile è 3. Queste variabili vengono ripetute in un ciclo for per stampare i valori delle colonne.

$ls -l | awk ' INIZIO { primo = 1; ultimo = 3 }
{ per (i = primo; i

Il seguente output apparirà dopo aver eseguito il comando. L'output mostra i primi tre valori di colonna dell'output, 'ls -l'.

Esempio 4: stampa un intervallo di colonne da un file con formattazione

Il seguente comando `awk` stamperà le prime tre colonne di contrassegni.txt usando printf e separatore di campo di output ( OFS ). Qui, il ciclo for include tre passaggi e tre colonne verranno stampate in sequenza dal file. OFS viene utilizzato qui per aggiungere spazio tra le colonne. Quando il valore del contatore del ciclo (i) è uguale a fine variabile, viene generata una nuova riga ( ).

$gattocontrassegni.txt
$awk -v cominciare=1 -v fine=3 '{ per (i=inizio; i<=end;i++) printf('%s%s',
$i,(i==fine) ? ' ' : OFS) }'
contrassegni.txt

Il seguente output verrà generato dopo aver eseguito i comandi precedenti.

Esempio 5: stampa l'intervallo di colonne da un file utilizzando un'istruzione condizionale

Il seguente comando `awk` stamperà la prima e l'ultima colonna da un file usando un ciclo for e un'istruzione if. Qui, il ciclo for include quattro passaggi. Il di partenza e fine le variabili vengono utilizzate nello script per omettere la seconda e la terza colonna dal file utilizzando la condizione if. La variabile OFS viene utilizzata per aggiungere spazio tra le colonne e la variabile ORS viene utilizzata per aggiungere una nuova riga ( ) dopo aver stampato l'ultima colonna.

$gattocontrassegni.txt
$awk -v cominciare=2 -v fine=3 '{ per (i=1; i<=NF;i++)
if(i>=inizio && i<=end) continue;
else printf('%s%s', $i,(i!=NF) ? OFS : ORS) }'
contrassegni.txt

Il seguente output apparirà dopo aver eseguito i comandi precedenti. L'output mostra la prima e l'ultima colonna di mark.txt.

Esempio 6: stampa l'intervallo di colonne da un file utilizzando la variabile NF

Il seguente comando `awk` stamperà la prima e l'ultima colonna del file utilizzando una variabile NF. Non vengono utilizzati cicli o istruzioni condizionali per stampare i valori delle colonne. NF indica il numero di campi. Ci sono quattro colonne in Marks.txt. $(NF-3) definisce la prima colonna e $NF indica l'ultima colonna.

$gattocontrassegni.txt
$awk '{print $(NF-3)' '$NF}'contrassegni.txt

Il seguente output viene prodotto eseguendo i comandi precedenti. L'output mostra la prima e l'ultima colonna di mark.txt.

Esempio 7: stampa l'intervallo di colonne da un file utilizzando substr() e index()

La funzione index() restituisce una posizione se il valore del secondo argomento esiste nel primo valore dell'argomento. La funzione substr() può accettare tre argomenti. Il primo argomento è un valore stringa, il secondo argomento è la posizione iniziale e il terzo argomento è la lunghezza. Il terzo argomento di substr() viene omesso nel comando seguente. Poiché la colonna inizia da $1 nel comando `awk`, la funzione index() restituirà $3 e il comando stamperà da $3 a $4.

$gattocontrassegni.txt
$awk '{stampa substr($0,indice($0,$3))}'contrassegni.txt

Il seguente output verrà prodotto eseguendo i comandi precedenti.

Esempio 8: stampa in sequenza un intervallo di colonne da un file utilizzando printf

Il seguente comando `awk` stamperà la prima, la seconda e la terza colonna di mark.txt impostando uno spazio sufficiente per 10 caratteri.

$gattocontrassegni.txt
$awk '//{printf '%10s %10s %10s ',$1,$3,$2 }'contrassegni.txt

Il seguente output verrà prodotto eseguendo i comandi precedenti.

Conclusione

Esistono vari modi per stampare l'intervallo di colonne dall'output del comando o da un file. Questo tutorial mostra come il comando `awk` può aiutare gli utenti Linux a stampare contenuti da dati tabulari.