GNU Info

Info Node: (gawk.info)Print Examples

(gawk.info)Print Examples


Next: Output Separators Prev: Print Up: Printing
Enter node , (file) or (file)node

Examples of `print' Statements
==============================

   Each `print' statement makes at least one line of output.  However,
it isn't limited to only one line.  If an item value is a string that
contains a newline, the newline is output along with the rest of the
string.  A single `print' statement can make any number of lines this
way.

   The following is an example of printing a string that contains
embedded newlines (the `\n' is an escape sequence, used to represent
the newline character; Note: Escape Sequences):

     $ awk 'BEGIN { print "line one\nline two\nline three" }'
     -| line one
     -| line two
     -| line three

   The next example, which is run on the `inventory-shipped' file,
prints the first two fields of each input record, with a space between
them:

     $ awk '{ print $1, $2 }' inventory-shipped
     -| Jan 13
     -| Feb 15
     -| Mar 15
     ...

   A common mistake in using the `print' statement is to omit the comma
between two items.  This often has the effect of making the items run
together in the output, with no space.  The reason for this is that
juxtaposing two string expressions in `awk' means to concatenate them.
Here is the same program, without the comma:

     $ awk '{ print $1 $2 }' inventory-shipped
     -| Jan13
     -| Feb15
     -| Mar15
     ...

   To someone unfamiliar with the `inventory-shipped' file, neither
example's output makes much sense.  A heading line at the beginning
would make it clearer.  Let's add some headings to our table of months
(`$1') and green crates shipped (`$2').  We do this using the `BEGIN'
pattern (Note: The `BEGIN' and `END' Special Patterns.)  so
that the headings are only printed once:

     awk 'BEGIN {  print "Month Crates"
                   print "----- ------" }
                {  print $1, $2 }' inventory-shipped

When run, the program prints the following:

     Month Crates
     ----- ------
     Jan 13
     Feb 15
     Mar 15
     ...

The only problem, however, is that the headings and the table data
don't line up!  We can fix this by printing some spaces between the two
fields:

     awk 'BEGIN { print "Month Crates"
                  print "----- ------" }
                { print $1, "     ", $2 }' inventory-shipped

   Lining up columns this way can get pretty complicated when there are
many columns to fix.  Counting spaces for two or three columns is
simple, but any more than this can take up a lot of time. This is why
the `printf' statement was created (Note: Using `printf' Statements for
Fancier Printing.); one of its specialties is lining up columns
of data.

   *Note:* You can continue either a `print' or `printf' statement
simply by putting a newline after any comma (Note: `awk' Statements
Versus Lines.).


automatically generated by info2www version 1.2.2.9