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

File: gawk.info,  Node: DOS Quoting,  Up: Quoting

1.1.6.1 Quoting in MS-Windows Batch Files
.........................................

Although this Info file generally only worries about POSIX systems and
the POSIX shell, the following issue arises often enough for many users
that it is worth addressing.

   The "shells" on Microsoft Windows systems use the double-quote
character for quoting, and make it difficult or impossible to include an
escaped double-quote character in a command-line script.  The following
example, courtesy of Jeroen Brink, shows how to escape the double quotes
from this one liner script that prints all lines in a file surrounded by
double quotes:

     { print "\"" $0 "\"" }

In an MS-Windows command-line the one-liner script above may be passed
as follows:

     gawk "{ print \"\042\" $0 \"\042\" }" FILE

   In this example the '\042' is the octal code for a double-quote;
'gawk' converts it into a real double-quote for output by the 'print'
statement.

   In MS-Windows escaping double-quotes is a little tricky because you
use backslashes to escape double-quotes, but backslashes themselves are
not escaped in the usual way; indeed they are either duplicated or not,
depending upon whether there is a subsequent double-quote.  The
MS-Windows rule for double-quoting a string is the following:

  1. For each double quote in the original string, let N be the number
     of backslash(es) before it, N might be zero.  Replace these N
     backslash(es) by 2*N+1 backslash(es)

  2. Let N be the number of backslash(es) tailing the original string, N
     might be zero.  Replace these N backslash(es) by 2*N backslash(es)

  3. Surround the resulting string by double-quotes.

   So to double-quote the one-liner script '{ print "\"" $0 "\"" }' from
the previous example you would do it this way:

     gawk "{ print \"\\\"\" $0 \"\\\"\" }" FILE

However, the use of '\042' instead of '\\\"' is also possible and easier
to read, because backslashes that are not followed by a double-quote
don't need duplication.

© manpagez.com 2000-2025
Individual documents may contain additional copyright information.