【问题标题】:Select-String and Exclude? NotMatch?选择字符串并排除?不匹配?
【发布时间】:2016-06-16 16:59:06
【问题描述】:

我需要从日志文件中选择字符串,如果它们以模式“致命:”开头,但如果它们包含整行“致命:SystemCallError:接口未知。-RegisterEventSource”(因为这是一个每次系统重新启动时都会弹出错误,我想从选择字符串结果中排除这些行)。我目前有代码搜索所有以“FATAL:”开头的字符串,但如果整行与我引用的上述行匹配,我不确定如何让它排除它。我希望以某种方式使用 Select-String 并排除或不匹配。这是我当前的代码:

$fatalerrors = Select-String -Pattern "FATAL:" -Path $cheflogfile

我需要以某种方式不包含完全是这样的行:

“致命:SystemCallError:接口未知。-RegisterEventSource”

另外值得注意的是 - 我要搜索的所有行都以“FATAL:”开头。我想这就是我被绊倒的地方。不完全确定。

【问题讨论】:

  • 示例总是有帮助的。请显示一些示例输入以及您期望从中获得的输出以及您实际获得的输出。

标签: powershell


【解决方案1】:

试试这样的:

gc $cheflogfile | ?{ $_.StartsWith('FATAL:') -and $_ -ne 'FATAL: SystemCallError: The interface is unknown. - RegisterEventSource'}

这将获取所有带有“FATAL:”但不等于“FATAL: SystemCallError: The interface is unknown. - RegisterEventSource”的行

【讨论】:

  • 都是什么行?我已经在 PowerShell 2.0 和 5.0 中尝试过它,它按预期工作。也许您的日志文件正在将所有内容写入一行?或者你有错字?
猜你喜欢
  • 2015-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多