2015-04-06 34 views
2

我无法弄清楚,如何在AWK,Gnuwin中搜索单词。我在AWK如下:Winawk/Gnuwin的AWK Escape双引号

......“{如果($ 2 ==”“”“道”“”“)打印}” ......

这个词是用双引号写了我文件,所以我必须用双引号进行搜索。

我试过了: ...“{if($ 2 ==”“”\“Word \”“”“)print}”... 以及许多其他方法,这些方法都行不通。

有没有人知道这将如何工作?

预先感谢您

回答

0

在Windows外壳程序,你必须逃离脚本中的双引号用一个反斜杠,如果你在命令行中输入脚本。而且,这些双引号,如果他们有一些字符串的一部分,必须由反斜线由于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\"" 
+0

非常感谢您!我一整天都在寻找这个! – Vidarrus

+0

或只是把它放在一个文件中,不要反斜线! – 2015-04-07 07:41:58