manpagez: man pages & more
info gawk
Home | html | info | man

gawk: Print Examples

 5.2 'print' Statement Examples
 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 containing
 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; ⇒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
      $ 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 a 'BEGIN' rule
 (⇒BEGIN/END) 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
      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 (⇒Printf); 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 (⇒
© 2000-2018
Individual documents may contain additional copyright information.