Copyright (C) 2000-2012 |
GNU Info (gawk.info)Rewind FunctionRereading the Current File -------------------------- Another request for a new built-in function was for a `rewind' function that would make it possible to reread the current file. The requesting user didn't want to have to use `getline' (Note: Explicit Input with `getline'.) inside a loop. However, as long as you are not in the `END' rule, it is quite easy to arrange to immediately close the current input file and then start over with it from the top. For lack of a better name, we'll call it `rewind': # rewind.awk --- rewind the current file and start over function rewind( i) { # shift remaining arguments up for (i = ARGC; i > ARGIND; i--) ARGV[i] = ARGV[i-1] # make sure gawk knows to keep going ARGC++ # make current file next to get done ARGV[ARGIND+1] = FILENAME # do it nextfile } This code relies on the `ARGIND' variable (Note: Built-in Variables That Convey Information.), which is specific to `gawk'. If you are not using `gawk', you can use ideas presented in Note: Noting Data File Boundaries, to either update `ARGIND' on your own or modify this code as appropriate. The `rewind' function also relies on the `nextfile' keyword (Note: Using `gawk''s `nextfile' Statement.). Note: Implementing `nextfile' as a Function, for a function version of `nextfile'. automatically generated by info2www version 1.2.2.9 |