This topic is about AWK – Miscellaneous Functions.
AWK has the following miscellaneous functions −
close(expr)
This function closes file of pipe..
Example
[jerry]$ awk 'BEGIN { cmd = "tr [a-z] [A-Z]" print "hello, world !!!" |& cmd close(cmd, "to") cmd |& getline out print out; close(cmd); }'
On executing this code, you get the following result −
Output
HELLO, WORLD !!!
Does the script look cryptic? Let us demystify it.
- The first statement, cmd = “tr [a-z] [A-Z]” – is the command to which we establish the two way communication from AWK.
- The next statement, i.e., the print command, provides input to the tr command. Here &| indicates two-way communication.
- The third statement, i.e., close(cmd, “to”), closes the to process after competing its execution.
- The next statement cmd |& getline out stores the output into out variable with the aid of getline function.
- The next print statement prints the output and finally the close function closes the command.
delete
This function deletes an element from an array. The following example shows the usage of the delete function −
Example
[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] } }'
On executing this code, you get the following result −
Output
Array elements before delete operation: One Two Three Four Array elements after delete operation: Three Four
exit
This function stops the execution of a script. It also accepts an optional expr which becomes AWK’s return value. The following example describes the usage of exit function.
Example
[jerry]$ awk 'BEGIN { print "Hello, World !!!" exit 10 print "AWK never executes this statement." }'
On executing this code, you get the following result −
Output
Hello, World !!!
fflush
This function flushes any buffers associated with open output file or pipe. The following syntax demonstrates the function.
Syntax
fflush([output-expr])
If no output-expr is supplied, it flushes the standard output. If output-expr is the null string (“”), then it flushes all open files and pipes.
getline
This function instructs AWK to read the next line. The following example reads and displays the marks.txt file using getline function.
Example
[jerry]$ awk '{getline; print $0}' marks.txt
On executing this code, you get the following result −
Output
2) Rahul Maths 90 4) Kedar English 85 5) Hari History 89
The script works fine. But where is the first line? Let us find out.
At the start, AWK reads the first line from the file marks.txt and stores it into $0 variable.
And finally, AWK’s print statement prints the second line. This process continues until the end of the file.
next
The next function changes the flow of the program. It causes the current processing of the pattern space to stop. The program reads the next line, and starts executing the commands again with the new line. For instance, the following program does not perform any processing when a pattern match succeeds.
Example
[jerry]$ awk '{if ($0 ~/Shyam/) next; print $0}' marks.txt
On executing this code, you get the following result −
Output
1) Amit Physics 80 2) Rahul Maths 90 4) Kedar English 85 5) Hari History 89
nextfile
The nextfile function changes the flow of the program. It stops processing the current input file and starts a new cycle through pattern/procedures statements, beginning with the first record of the next file. For instance, the following example stops processing the first file when a pattern match succeeds.
First create two files. Let us say file1.txt contains −
file1:str1 file1:str2 file1:str3 file1:str4
And file2.txt contains −
file2:str1 file2:str2 file2:str3 file2:str4
Now let us use the nextfile function.
Example
[jerry]$ awk '{ if ($0 ~ /file1:str2/) nextfile; print $0 }' file1.txt file2.txt
Output
On executing this code, you get the following result −
file1:str1 file2:str1 file2:str2 file2:str3 file2:str4
return
This function can be used within a user-defined function to return the value. Please note that the return value of a function is undefined if expr is not provided. The following example describes the usage of the return function.
First, create a functions.awk file containing AWK command as shown below −
Example
function addition(num1, num2) { result = num1 + num2 return result } BEGIN { res = addition(10, 20) print "10 + 20 = " res }
On executing this code, you get the following result −
Output
10 + 20 = 30
system
This function executes the specified command and returns its exit status. A return status 0 indicates that a command execution has succeeded. A non-zero value indicates a failure of command execution. For instance, the following example displays the current date and also shows the return status of the command.
Example
[jerry]$ awk 'BEGIN { ret = system("date"); print "Return value = " ret }'
On executing this code, you get the following result −
Output
Sun Dec 21 23:16:07 IST 2014 Return value = 0
In this topic we learned about AWK – Miscellaneous Functions. To know more, Click Here.
Pingback: AWK - Built-in Functions - Adglob Infosystem Pvt Ltd
Pingback: AWK - Bit Manipulation Functions - Adglob Infosystem Pvt Ltd