Come stampare una gamma di colonne usando il comando 'awk'

Come stampare una gamma di colonne usando il comando 'awk'
Il comando "Awk" è uno dei tanti comandi che può essere utilizzato per stampare una gamma di colonne da dati tabulari in Linux. Il comando 'awk' può essere utilizzato direttamente dal terminale eseguendo il file di script 'awk'. In questo tutorial, ti mostreremo come stampare una gamma di colonne da dati tabulari.

Esempio 1: stampare una gamma di colonne da un comando output

Il comando seguente stamperà la seconda, terza e quarta colonna dall'output del comando, 'ls -l'. Qui, i numeri di colonna sono indicati esplicitamente, ma un comando più efficiente per la stampa della stessa gamma di colonne è mostrato nel prossimo esempio.

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

Il seguente output è prodotto dal comando sopra.

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 denominato segni.TXT Con i seguenti contenuti:

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 marchi.TXT. IL per Il ciclo viene utilizzato per stampare i valori della colonna e il ciclo include tre passaggi. IL Nf La variabile indica il numero totale di campi o colonne del file.

$ cat segni.TXT
$ awk 'for (i = 1; i<=NF-1;i++) printf $i" "; print ""' marks.txt

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

Esempio 3: stampare l'intervallo di colonne definendo le variabili di avvio e finale

Il seguente comando "awk" stamperà le prime tre colonne dall'output del comando "ls -l" inizializzando il di partenza E finale variabili. Qui, il valore del di partenza la variabile è 1 e il valore del finale La variabile è 3. Queste variabili sono iterate in un ciclo per stampare i valori della colonna.

$ ls -l | awk 'inizio first = 1; ultimo = 3
for (i = first; i < last; i++) printf("%s ", $i) print $last '

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

Esempio 4: stampare una gamma di colonne da un file con formattazione

Il seguente comando "awk" stamperà le prime tre colonne di segni.TXT usando printf e separatore di campo di output (Dis). Qui, il loop include tre passaggi e tre colonne saranno stampate in sequenza dal file. Dis viene usato qui per aggiungere spazio tra le colonne. Quando il valore contatore del ciclo (i) è uguale al finale Variabile, quindi viene generata una nuova linea (\ n).

$ cat segni.TXT
$ awk -v start = 1 -v end = 3 'for (i = start; i<=end;i++) printf("%s%s",
$ i, (i == fine) ? "\ n": ofs) 'segni.TXT

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

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

Il seguente comando "awk" stamperà la prima e le ultime colonne da un file utilizzando un ciclo per loop e un'istruzione if. Qui, il loop include quattro passaggi. IL di partenza E finale Le variabili vengono utilizzate nello script per omettere la seconda e la terza colonne 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 linea (\ n) dopo aver stampato l'ultima colonna.

$ cat segni.TXT
$ awk -v start = 2 -v end = 3 'for (i = 1; i<=NF;i++)
if (i> = start && i<=end) continue;
else printf ("%s%s", $ i, (i!= NF) ? OFS: Ors) 'segni.TXT

La seguente output apparirà dopo aver eseguito i comandi sopra. L'output mostra le prime e le ultime colonne di marchi.TXT.

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

Il seguente comando "awk" stamperà la prima e le ultime colonne dal file utilizzando una variabile NF. Non vengono utilizzati loop o istruzioni condizionali per stampare i valori della colonna. NF indica il numero di campi. Ci sono quattro colonne in marchi.TXT. $ (NF-3) definisce la prima colonna e $ NF indica l'ultima colonna.

$ cat segni.TXT
$ awk 'print $ (nf-3) "" $ nf' segni.TXT

Il seguente output viene prodotto eseguendo i comandi sopra. L'output mostra le prime e le ultime colonne di marchi.TXT.

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

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

$ cat segni.TXT
$ awk 'print substr ($ 0, indice ($ 0, $ 3))' segni.TXT

Il seguente output verrà prodotto eseguendo i comandi sopra.

Esempio 8: stampare in sequenza una gamma di colonne da un file utilizzando printf

Il seguente comando "awk" stamperà la prima, la seconda e la terza colonne di marchi.txt impostando abbastanza spazio per 10 caratteri.

$ cat segni.TXT
$ awk '// printf " %10s %10s %10s \ n", $ 1, $ 3, $ 2 segni.TXT

Il seguente output verrà prodotto eseguendo i comandi sopra.

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 i contenuti da dati tabulari.