2014-09-24 79 views
0

我要搜索以下字符串中的文本文件:$$u$$

我試過select-stringget-content.Contains。在我看來,這是不可能的。

我用它進行搜索作爲變量:$ToSearch = "'$'$u'$'$"

它總是提供虛假的結果。

有沒有人知道解決方案?

回答

1

這是因爲大多數搜索過濾器都依賴於正則表達式。在正則表達式$符號需要轉義

不知道更多的你要完成我不能給太多的例子了什麼,但這裏是一個:

'this is a $$u$$ test' -replace "\$","" 

的「\」就是逃避角色 - 意味着從字面上翻譯它。

編輯:每評論

$Val = 'this is a $$u$$ test' 
$Val | Select-String "\$+\w\$+" -quiet 

-Quiet開關返回T/F,而不是一個字符串值。

+0

我只想有一個二進制答案(TRUE/FALSE)是否可以在文本文件中找到該字符串。更多的行可以包含這個,但是一個事件已經足以獲得TRUE結果。 – jarvasm 2014-09-24 13:09:25

+0

使用可能更有幫助的東西編輯回答 – 2014-09-24 13:15:15

0

$是正則表達式中的保留字符,這會使搜索更加複雜。

Select-String的默認搜索模式類型是正則表達式,但您也可以指定-Simplematch-Wildcard,其中任何一個都不需要轉義$。如果您使用-Wildcard,則需要在比賽的任何一端包含wilcard * '*$$u$$*'。爲了簡單匹配,只需使用您想匹配的字符串 - '$$u$$'

+1

只要不要忘記單引號模式,因爲'$'也是PowerShell中的特殊字符,並且使用雙引號字符串進行評估。 – 2014-09-24 14:32:06

+0

$ true dat。最佳做法是在字符串包含明確想要展開的變量和/或子表達式時僅加雙引號。 – mjolinor 2014-09-24 14:39:40