GNU Info

Info Node: (gawk.info)Non-decimal Data

(gawk.info)Non-decimal Data


Next: Two-way I/O Prev: Advanced Features Up: Advanced Features
Enter node , (file) or (file)node

Allowing Non-Decimal Input Data
===============================

   If you run `gawk' with the `--non-decimal-data' option, you can have
non-decimal constants in your input data:

     $ echo 0123 123 0x123 |
     > gawk --non-decimal-data '{ printf "%d, %d, %d\n",
     >                                         $1, $2, $3 }'
     -| 83, 123, 291

   For this feature to work, write your program so that `gawk' treats
your data as numeric:

     $ echo 0123 123 0x123 | gawk '{ print $1, $2, $3 }'
     -| 0123 123 0x123

The `print' statement treats its expressions as strings.  Although the
fields can act as numbers when necessary, they are still strings, so
`print' does not try to treat them numerically.  You may need to add
zero to a field to force it to be treated as a number.  For example:

     $ echo 0123 123 0x123 | gawk --non-decimal-data '
     > { print $1, $2, $3
     >   print $1 + 0, $2 + 0, $3 + 0 }'
     -| 0123 123 0x123
     -| 83 123 291

   Because it is common to have decimal data with leading zeros, and
because using it could lead to surprising results, the default is to
leave this facility disabled.  If you want it, you must explicitly
request it.

   *Caution:* _Use of this option is not recommended._ It can break old
programs very badly.  Instead, use the `strtonum' function to convert
your data (Note: Octal and Hexadecimal Numbers.).
This makes your programs easier to write and easier to read, and leads
to less surprising results.


automatically generated by info2www version 1.2.2.9