【问题标题】:How to handle multiple search patterns using Select-String in Powershell如何在 Powershell 中使用 Select-String 处理多个搜索模式
【发布时间】:2022-02-24 01:17:34
【问题描述】:

我正在跨多个服务器解析错误日志文件,并且需要报告问题错误。 错误日志文件应至少包含以下内容(可以的已知错误):

  • ERROR 一些错误文本
  • ERROR 更多错误文本
  • 错误这里有更多错误文本

我需要的是一个包含以上所有三个文本字符串的 Select-String 搜索模式:

$Search_Str_1 = "ERROR Some error text"
$Search_Str_2 = "ERROR Some more error text"
$Search_Str_3 = "ERROR Here is more error text"

$Search_Str_1、$Search_Str_2 和 $Search_Str_3 是可接受的错误字符串,如果在错误日志中找到,则不应报告。但是,如果发现任何其他错误字符串与上述任何搜索字符串都不匹配,则应将其报告为错误错误。

例子:

  • ERROR 一些错误文本
  • ERROR 更多错误文本
  • 错误这里有更多错误文本
  • ERROR 这是错误的错误文本,应该报告

需要将第 4 个错误行(以及与 search_str 1、2 或 3 不匹配的任何其他行)报告为错误行。

假设代码:

$ErrorLog = Get-ChildItem -Path $LOG_PATH -Include Error.log -Recurse | Select-String -notmatch ($Search_Str_1 -or $Search_Str_2 -or $Search_Str_3)

我该怎么做?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    select-string -pattern 接受一个数组。将这些搜索字符串放在一个数组中并将其传递给选择字符串。如果您希望它与您传入的模式不匹配,请添加 -NotMatch 标志。

    【讨论】:

    • 谢谢,manojlds!将搜索字符串放入数组中!
    【解决方案2】:

    select-string,别名 sls,将采用逗号分隔的模式列表。知道了这一点,您就可以:

    sls 'pattern1','pattern2',...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多