【问题标题】:Powershell Search String in File Containing $包含 $ 的文件中的 Powershell 搜索字符串
【发布时间】:2014-11-18 23:35:34
【问题描述】:

我想在文本文件中搜索以下字符串:$$u$$

我试过select-stringget-content.Contains。在我看来这是不可能的。

我用它作为变量进行搜索:$ToSearch = "'$'$u'$'$"

它总是给出错误的结果。

【问题讨论】:

    标签: string file powershell search


    【解决方案1】:

    这是因为大多数搜索过滤器都依赖于正则表达式。正则表达式中的$符号需要转义

    如果不了解您想要完成的更多内容,我无法举出太多示例,但这里有一个示例:

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

    “\”是转义字符的意思 - 意思是按字面意思翻译。

    编辑:每条评论

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

    -Quiet 开关返回 t/f 而不是字符串值。

    【讨论】:

    • 我只想得到一个二进制答案(真/假),不管这个字符串是否可以在文本文件中找到。更多行可以包含此内容,但出现一次就足够了 TRUE 结果。
    • 编辑的答案可能更有帮助
    【解决方案2】:

    $ 是正则表达式中的保留字符,这会使您的搜索复杂化。

    Select-String 的默认搜索模式类型是正则表达式,但您也可以指定 -Simplematch-Wildcard,其中任何一个都无需转义 $。如果您使用 -Wildcard,则需要在匹配的任一端包含通配符 * - '*$$u$$*'。对于简单匹配,只需使用您要匹配的字符串 - '$$u$$'

    【讨论】:

    • 不要忘记单引号该模式,因为$ 也是 PowerShell 中的一个特殊字符,并在双引号字符串中进行评估。
    • $true 数据。最佳做法是仅在字符串包含您明确希望扩展的变量和/或子表达式时使用双引号。
    猜你喜欢
    • 2023-02-21
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 2021-07-06
    • 2021-06-12
    相关资源
    最近更新 更多