我想用PS扫描一些日志文件以查找错误
select-string -pattern '[E]' -path D:15sBASVectorNetworkAnalysis.AutomationInterfaceTestsTestsCOMTestingPythonUnitTestsPyTestsResult*.log
但是尽管没有错误,PS 将日志的每一行都列为命中,至少是包含"[I]"的日志。 我尝试了不同的变体,在 [E] 之前/之后使用双撇号、空白,并故意添加一行包含"[E]",但我要么得到一堆行,要么没有。
有什么提示吗?多谢。
下面是一个日志示例,包括带有有意添加 [E] 的行
2022-03-04 09:22:26 [i] Transmission: Execution State is OK!
2022-03-04 09:22:26 [i] User range calib state is active!
2022-03-04 09:22:28 [i] **** Starting Save/Load calibration test ****
2022-03-04 09:22:29 [i] Transmission: Execution State is OK!
2022-03-04 09:22:29 [i] User range calib was saved!
2022-03-04 09:22:29 [i] User range calib was loaded!
2022-03-04 09:22:31 [i] **** Starting S11 one port meas test ****
2022-03-04 09:26:04 [i] S11OnePortMeas: Execution State is OK!
2022-03-04 09:26:04 [i] S11OnePortMeas: Number of results is OK!
2022-03-04 09:26:05 [E] **** Starting Impedance one port meas test ****
2022-03-04 09:26:06 [i] OnePortMeas: Execution State is OK!
Select-String -Pattern
使用正则表达式,在正则表达式中,括号表示"匹配括号中的任何字符",因此它匹配包含 E 的每一行。您可以将 [E] 替换为 [qwerty],它将匹配包含"qwerty"中任何字母的所有行(在您的示例中,所有这些字母都是如此)。
如果要从字面上匹配字符串,可以使用-SimpleMatch
参数,该参数将把您的输入解释为字符串,并匹配包含该给定字符串的任何内容。
在将正则表达式放入脚本之前,使用 regex101.com 等网站对其进行测试。 这为我节省了大量的时间和精力。
(?i)[e]
匹配[e]
和[E]
.
[e]
匹配[e]
.
[E]
匹配[E]
.
(?i)
使正则表达式不区分大小写。 正则表达式有自己的区分大小写规则,独立于 PowerShell。