我想使用PS扫描一些日志文件中的错误。
select-string -pattern '[E]' -path D:\15\s\BAS\VectorNetworkAnalysis.AutomationInterfaceTests\Tests\COMTesting\PythonUnitTests\PyTestsResult*.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!发布于 2022-03-04 10:18:02
Select-String -Pattern使用regex,在regex中,括号的意思是“匹配括号中的任何字符”,因此它匹配每一行包含E的行。您可以用qwerty替换E,它将匹配"qwerty“中包含任何字母的所有行(在您的示例中是这样的)。
如果要匹配字符串,可以使用-SimpleMatch参数,它将将输入解释为字符串,并匹配包含该给定字符串的任何内容。
发布于 2022-03-04 12:08:33
在将正则表达式放在脚本中之前,可以使用regex101.com这样的网站来测试它们。这节省了我很多时间和精力。
(?i)\[e\]与[e]和[E]匹配。
\[e\]与[e]匹配。
\[E\]与[E]匹配。
(?i)使正则表达式大小写不敏感。正则表达式有独立于PowerShell的区分大小写的规则。
https://stackoverflow.com/questions/71349461
复制相似问题