Copyright (C) 2000-2012 |
GNU Info (gawk.info)Other ArgumentsOther Command-Line Arguments ============================ Any additional arguments on the command-line are normally treated as input files to be processed in the order specified. However, an argument that has the form `VAR=VALUE', assigns the value VALUE to the variable VAR--it does not specify a file at all. (This was discussed earlier in Note: Assigning Variables on the Command Line. ) All these arguments are made available to your `awk' program in the `ARGV' array (Note: Built-in Variables). Command-line options and the program text (if present) are omitted from `ARGV'. All other arguments, including variable assignments, are included. As each element of `ARGV' is processed, `gawk' sets the variable `ARGIND' to the index in `ARGV' of the current element. The distinction between file name arguments and variable-assignment arguments is made when `awk' is about to open the next input file. At that point in execution, it checks the file name to see whether it is really a variable assignment; if so, `awk' sets the variable instead of reading a file. Therefore, the variables actually receive the given values after all previously specified files have been read. In particular, the values of variables assigned in this fashion are _not_ available inside a `BEGIN' rule (Note: The `BEGIN' and `END' Special Patterns.), because such rules are run before `awk' begins scanning the argument list. The variable values given on the command-line are processed for escape sequences (Note: Escape Sequences). (d.c.) In some earlier implementations of `awk', when a variable assignment occurred before any file names, the assignment would happen _before_ the `BEGIN' rule was executed. `awk''s behavior was thus inconsistent; some command-line assignments were available inside the `BEGIN' rule, while others were not. Unfortunately, some applications came to depend upon this "feature." When `awk' was changed to be more consistent, the `-v' option was added to accommodate applications that depended upon the old behavior. The variable assignment feature is most useful for assigning to variables such as `RS', `OFS', and `ORS', which control input and output formats before scanning the data files. It is also useful for controlling state if multiple passes are needed over a data file. For example: awk 'pass == 1 { PASS 1 STUFF } pass == 2 { PASS 2 STUFF }' pass=1 mydata pass=2 mydata Given the variable assignment feature, the `-F' option for setting the value of `FS' is not strictly necessary. It remains for historical compatibility. automatically generated by info2www version 1.2.2.9 |