Questo articolo ti eseguirà attraverso alcuni interessanti comandi awk e quando usarli. Continuate a leggere per scoprirlo! Introduzione ad Awk
AWK è una lingua popolare in Unix e Linux. Ha preso il nome dai suoi autori: Alfred Aho, Peter Weinberger e Brian Kernighan. Il comando AWK consente l'accesso al linguaggio di programmazione AWK, progettato per elaborare i dati all'interno dei flussi di testo.
Popolarmente utilizzato per i modelli di scansione e semplificare le operazioni complesse, AWK ti aiuta a scrivere dichiarazioni efficaci per definire i modelli di testo in un file. Il comando AWK elabora quindi queste affermazioni leggendo una riga alla volta e intraprende un'azione in base alla condizione data.
In poche parole, Awk trova e sostituisce il testo e aiuta a ordinare, convalidare o indicizzare i dati dati.
Caratteristiche di AWK
Awk viene fornito con molte caratteristiche uniche:
- Nessuna raccolta è necessaria in AWK
- Spesso utilizzato per l'estrazione dei dati
- Comunemente usato per eseguire la manipolazione del testo
- Aiuta a generare risultati secondo necessità.
Ora esploriamo il potere dei comandi Awk.
15 comandi Awk interessanti
Ecco un elenco compilato di alcuni interessanti comandi AWK:
- Stampa numeri casuali in un set - Supponiamo di voler stampare alcuni numeri casuali da un pool selezionato. Puoi specificare la quantità di numeri casuali da questo pool e chiedere a AWK di stampare questo. Ecco un esempio: stampiamo 10 numeri da 0 a 1000. Quindi il comando awk per questo sarà il seguente: awk 'inizio per (i = 1; i <= 10; i++)
print int (1001 * rand ()) '
- Alla ricerca di foo o bar - E se vuoi scrivere una riga in cui vuoi eseguire una semplice ricerca per foo o bar? Ecco un comando che ti permetterà di fare proprio questo: se (/foo/||/bar/)
Stampa "trovato!"
- Riorganizzare un campo - Se vuoi stampare un campo particolare in un ordine particolare, Awk può farlo per te. Supponiamo di voler stampare i primi 5 campi di un set particolare in un campo per riga, è possibile utilizzare il seguente comando: awk 'i = 1
mentre io <= 3)
Stampa $ i
io++
' file di input
- Dividere una linea - In ogni determinato set di file, AWK può aiutare a dividere una riga in campi, dove x è il nome del campo: $ awk 'print $ x, $ x' xyz.TXT
- Esegui diversi comandi contemporaneamente - Per eseguire diversi comandi contemporaneamente, è possibile utilizzare un punto e virgola per specificare entrambi i comandi: $ echo "buongiorno! Jack "| awk '$ 2 =" Jill "; stampa $ 0'
- Esecuzione di uno script Awk - Se si desidera eseguire uno script AWK da un determinato file, è possibile creare un file sum_column e incollare lo script di seguito in quel file: #!/usr/bin/awk -f
Inizia sum = 0
sum = sum+$ x
End print Sum Nello script sopra, x è uguale alla colonna è necessario inserire nel file. Al completamento con successo di questa attività, è possibile utilizzare il comando seguente per visualizzare la somma della colonna X nel file di input:
awk -f sum_column input_file.
- Usando -f - Durante la codifica, può spesso sembrare poco pratico fare riferimento al terminale. Awk usa -F per eseguire la ricerca da un file: sceneggiatura awk -f.awk inputfile
- Eseguire funzioni matematiche - Puoi anche usare AWK per semplici funzioni matematiche: awk 'sum = $ 2 + $ 3 + $ 4; Avg = Sum / 3
> Stampa $ 1, Avg 'voti
- Hello World in Awk - Puoi stampare un semplice Hello World in Awk usando il seguente comando: awk "inizia stampa" Hello World!!""
Puoi anche creare un programma Hello World. Il seguente codice non solo stamperà l'onnipresente messaggio Hello, ma genererà anche informazioni sull'intestazione:
$ awk 'inizio stampa "ciao mondo!" '
- Stampa il numero totale di byte - Puoi scoprire i byte totali utilizzati dai file utilizzando il seguente comando: LS -l . | awk 'x += $ 5; FINE \
Stampa "Byte totali:" x '
Byte totali: 7449362
- Anonimizzare un registro Apache - È possibile utilizzare il seguente codice per anonimo un registro Apache: Cat Apache-Anon-Noadmin.registro | \
funzione awk 'ri (n) \
return int (n*rand ()); \
Inizio srand (); Se (! \
($ 5 in jack)) \
Jack [$ 5] = sprintf ("%d.%D.%D.%D", \
ri (255), ri (255) \
, ri (255), ri (255)); \
$ 5 = Jack [$ 5]; Stampa __g5_token5b610ba53dbe4 '
- Operando in righe - Se hai un indirizzo che desideri ordinare in righe, puoi farlo usando il seguente comando: inizia rs = ""; Fs = "\ n"
Stampa "Il nome è:", $ 1
Stampa "L'indirizzo è:", $ 2
Stampa "City and State sono:", $ 3
stampa ""
- Usando il ciclo while - Il ciclo while continua a eseguire l'azione data in un processo ripetuto fino a quando la condizione è vera. Ad esempio, per i numeri di stampa da 1 a 100, è possibile utilizzare il seguente codice: Awk 'inizio i = 1; mentre io < 100) print i; ++i '
- Usando il ciclo do-while - In questo ciclo, la condizione viene eseguita alla fine del ciclo anche se l'affermazione è falsa. Ad esempio, per stampare i numeri da 1 a 100 usando un ciclo do-while, è possibile utilizzare il seguente codice: awk 'inizio i = 1; do print i; ++ i while (i < 100) '
- Usando inizio e fine - La parola chiave iniziale viene utilizzata per creare un'intestazione per l'elaborazione del record: $ awk 'inizio stampa "xxx"
Allo stesso modo, la parola chiave finale viene utilizzata dopo l'elaborazione dei dati:
End stampa "file footer" '
Questo conclude l'elenco di 15 interessanti comandi Awk. Puoi provarli e vedere i risultati. Spero che tu lo trovi utile. Se hai trovato questo articolo interessante, puoi esplorare Mastering Linux Shell Scripting - Seconda edizione. In questo libro, scoprirai tutto ciò che devi sapere per padroneggiare lo scripting di shell e fare scelte informate sugli elementi che impieghi.