The getline function is used to read another line of input. Not only can getline read from the regular input data stream, it can also handle input from files and pipes.
The getline function is similar to awk's next statement. While both cause the next input line to be read, the next statement passes control back to the top of the script. The getline function gets the next line without changing control in the script. Possible return values are:
1If it was able to read a line.
0If it encounters the end-of-file.
-1If it encounters an error.
NOTE: Although getline is called a function and it does return a value, its syntax resembles a statement. Do not write getline(); its syntax does not permit parentheses.
In the previous chapter, we used a manual page source file as an example. The -man macros typically place the text argument on the next line. Although the macro is the pattern that you use to find the line, it is actually the next line that you process. For instance, to extract the name of the command from the manpage, the following example matches the heading "Name," reads the next line, and prints the first field of it:
# getline.awk -- test getline function/^\.SH "?Name"?/ { getline # get next line print $1 # print $1 of new line.}
AlsoBesides reading from the regular input stream, the getline function allows you to read input from a file or a pipe. For instance, the following statement reads the next line from the file data:
getline < "data"
Although the filename can be supplied through a variable, it is typically specified as a string constant, which must be enclosed in quotes. The symbol "<" is the same as the shell's input redirection symbol and will not be interpreted as the "less than" symbol. We can use a while loop to read all the lines from a file, testing for an end-of-file to exit the loop. The following example opens the file data and prints all of its lines:
while ( (getline < "data") > 0 ) print
(We parenthesize to avoid confusion; the "<" is a redirection, while the ">" is a comparison of the return value.) The input can also come from standard input. You can use getline following a prompt for the user to enter information:
BEGIN { printf "Enter your name: " getline < "-" print }
I hope this helps. Sorry if it didnt, but I tried LOL1:o