2015-04-06 64 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