AWK逃脱Winawk / Gnuwin的双引号

时间:2015-04-06 19:10:14

标签: awk escaping double-quotes

我无法弄清楚,如何在AWK,Gnuwin中搜索一个单词。我在AWK中有以下内容:

...“{if($ 2 ==”“”“Word”“”“)print}”...

Word在我的文件中用双引号编写,所以我必须用双引号搜索它。

我试过了: ......“{if($ 2 ==”“”\“Word \”“”“)打印}”...... 以及许多其他不起作用的方法。

有谁知道这将如何运作?

提前谢谢

1 个答案:

答案 0 :(得分:0)

在Windows shell中,如果要在命令行中输入脚本,则必须使用反斜杠转义脚本内的双引号。并且,那些双引号(如果它们是某些字符串的一部分)必须通过AWK规则的反斜杠进行转义,并且因为反斜杠在字符串内部,所以它也必须通过反斜杠进行转义:

gawk "$2 == \"\\\"Word\\\"\" {print $2}"

这将打印第二个标记为的任何行:“Word”

用一些空格打破它:

O   B   LQ  WORD  B   LQ  C
\"  \\  \"  Word  \\  \"  \"

O == Opening quote of the string to search for.
B == A backslash that will escape the following character
LQ == A literal double quote (because of the preceding backslash)
WORD == the literal text 'Word'
C == Closing quote of the string to search for.

如果测试不在命令行上,它会看起来好一点:

$2 == "\"Word\""