【问题标题】:Wildcards in a PowerShell findstr stringPowerShell findstr 字符串中的通配符
【发布时间】:2019-02-14 00:21:54
【问题描述】:

我正在使用findstr 在某些文件中查找特定的配置设置。在这种情况下,我正在寻找以字符串 *= 开头的行,但也可以是 * =* = 等(星号和等号之间的任意数量的空格)。

到目前为止我已经尝试过:

findstr /s /i /b "*\*=" .\config.ini
findstr /s /i /b "*.*=" .\config.ini
findstr /s /i /b "*`*=" .\config.ini

基本上,我可以在 PowerShell 文档中找到的任何转义字符都没有成功。

【问题讨论】:

  • 这个网站是为编程相关的问题。有关使用 OS 命令行工具或 findstr 等命令的问题属于 Super User。您的问题与 Powershell 无关,因为它严格要求 findstr。您可以在help center 中找到有关此站点的更多信息。
  • 搜索 powershell regex, regex101.com,并遵循上一条评论中的建议。
  • 您可能希望考虑以 PowerShell 方式执行此操作。例如使用Get-Content-match

标签: powershell wildcard findstr


【解决方案1】:

在您的 ini 文件中搜索模式时,您可以使用正则表达式样式。

我用了这个测试config.ini:

*=abc
* = cde
**=avc
a=b
c = d
e =

通过这个命令,我得到了你在问题中描述的行:

findstr /R /C:"^\*[ ]*=.*" config.ini

结果是:

*=abc
* = cde

这里是正则表达式的描述:^ 表示行首。然后你要求*。你必须逃避它,所以你必须使用\*。之后,可以有任意数量的空格,因此您已将其放入正则表达式类,即[ ]* ([<space>]*)。空格后面是等号=,等号后面可以是其他字符,所以.*

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2018-12-26
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    相关资源
    最近更新 更多