AWK - Funzioni varie
AWK ha le seguenti funzioni varie:
chiudi (espr)
Questa funzione chiude il file di pipe ..
Esempio
[jerry]$ awk 'BEGIN {
cmd = "tr [a-z] [A-Z]"
print "hello, world !!!" |& cmd
close(cmd, "to")
cmd |& getline out
print out;
close(cmd);
}'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
HELLO, WORLD !!!
Lo script sembra criptico? Demistifichiamolo.
La prima affermazione, cmd = "tr [a-z] [A-Z]" - è il comando a cui stabiliamo la comunicazione bidirezionale da AWK.
La dichiarazione successiva, ovvero il file printcomando, fornisce l'input al comando tr. Qui&| indica la comunicazione a due vie.
La terza affermazione, cioè close(cmd, "to"), chiude il file to processo dopo aver concorso alla sua esecuzione.
La prossima dichiarazione cmd |& getline out memorizza l'output in out variabile con l'aiuto della funzione getline.
La successiva istruzione print stampa l'output e infine la funzione close chiude il comando.
Elimina
Questa funzione elimina un elemento da un array. L'esempio seguente mostra l'utilizzo didelete funzione -
Esempio
[jerry]$ awk 'BEGIN {
arr[0] = "One"
arr[1] = "Two"
arr[2] = "Three"
arr[3] = "Four"
print "Array elements before delete operation:"
for (i in arr) {
print arr[i]
}
delete arr[0]
delete arr[1]
print "Array elements after delete operation:"
for (i in arr) {
print arr[i]
}
}'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
Array elements before delete operation:
One
Two
Three
Four
Array elements after delete operation:
Three
Four
Uscita
Questa funzione interrompe l'esecuzione di uno script. Accetta anche un optionalexprche diventa il valore di ritorno di AWK. Il seguente esempio descrive l'utilizzo della funzione di uscita.
Esempio
[jerry]$ awk 'BEGIN {
print "Hello, World !!!"
exit 10
print "AWK never executes this statement."
}'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
Hello, World !!!
fflush
Questa funzione svuota qualsiasi buffer associato al file di output aperto o alla pipe. La sintassi seguente mostra la funzione.
Sintassi
fflush([output-expr])
Se non viene fornito output-expr, svuota lo standard output. Se output-expr è la stringa nulla (""), svuota tutti i file aperti e le pipe.
getline
Questa funzione indica ad AWK di leggere la riga successiva. L'esempio seguente legge e visualizza il filemarks.txt file utilizzando la funzione getline.
Esempio
[jerry]$ awk '{getline; print $0}' marks.txt
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
2) Rahul Maths 90
4) Kedar English 85
5) Hari History 89
Lo script funziona bene. Ma dov'è la prima riga? Cerchiamo di scoprirlo.
All'inizio, AWK legge la prima riga del file marks.txt e lo memorizza in $0 variabile.
E infine, AWK's printistruzione stampa la seconda riga. Questo processo continua fino alla fine del file.
Il prossimo
Il nextfunzione cambia il flusso del programma. Provoca l'arresto dell'elaborazione corrente dello spazio del pattern. Il programma legge la riga successiva e inizia a eseguire nuovamente i comandi con la nuova riga. Ad esempio, il seguente programma non esegue alcuna elaborazione quando una corrispondenza di pattern riesce.
Esempio
[jerry]$ awk '{if ($0 ~/Shyam/) next; print $0}' marks.txt
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
1) Amit Physics 80
2) Rahul Maths 90
4) Kedar English 85
5) Hari History 89
nextfile
Il nextfilefunzione cambia il flusso del programma. Arresta l'elaborazione del file di input corrente e avvia un nuovo ciclo attraverso le istruzioni pattern / procedure, iniziando dal primo record del file successivo. Ad esempio, il seguente esempio interrompe l'elaborazione del primo file quando una corrispondenza di pattern riesce.
Per prima cosa crea due file. Diciamofile1.txt contiene -
file1:str1
file1:str2
file1:str3
file1:str4
E file2.txt contiene -
file2:str1
file2:str2
file2:str3
file2:str4
Ora usiamo la funzione nextfile.
Esempio
[jerry]$ awk '{ if ($0 ~ /file1:str2/) nextfile; print $0 }' file1.txt file2.txt
Produzione
Eseguendo questo codice, ottieni il seguente risultato:
file1:str1
file2:str1
file2:str2
file2:str3
file2:str4
ritorno
Questa funzione può essere utilizzata all'interno di una funzione definita dall'utente per restituire il valore. Si noti che il valore di ritorno di una funzione non è definito se non viene fornito expr. Il seguente esempio descrive l'utilizzo della funzione return.
Innanzitutto, crea un file functions.awk file contenente il comando AWK come mostrato di seguito -
Esempio
function addition(num1, num2) {
result = num1 + num2
return result
}
BEGIN {
res = addition(10, 20)
print "10 + 20 = " res
}
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
10 + 20 = 30
sistema
Questa funzione esegue il comando specificato e restituisce il suo stato di uscita. Uno stato di ritorno 0 indica che l'esecuzione di un comando è riuscita. Un valore diverso da zero indica un errore di esecuzione del comando. Ad esempio, il seguente esempio mostra la data corrente e mostra anche lo stato di ritorno del comando.
Esempio
[jerry]$ awk 'BEGIN { ret = system("date"); print "Return value = " ret }'
Eseguendo questo codice, ottieni il seguente risultato:
Produzione
Sun Dec 21 23:16:07 IST 2014
Return value = 0