gawk: DOS 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.