我正在使用select string在文件中搜索错误。是否可以像grep一样排除搜索模式?例如:
grep ERR* | grep -v "ERR-10"
select-string -path logerror.txt -pattern "ERR"
日志错误.txt
OK
ERR-10
OK
OK
ERR-20
OK
OK
ERR-10
ERR-00
我想获取所有的ERR行,但不包括ERR-00和ERR-10
我正在使用select string在文件中搜索错误。是否可以像grep一样排除搜索模式?例如:
grep ERR* | grep -v "ERR-10"
select-string -path logerror.txt -pattern "ERR"
日志错误.txt
OK
ERR-10
OK
OK
ERR-20
OK
OK
ERR-10
ERR-00
我想获取所有的ERR行,但不包括ERR-00和ERR-10
我使用"-NotMatch"参数来实现这个功能
PS C:\>Get-Content .\some.txt
1
2
3
4
5
PS C:\>Get-Content .\some.txt | Select-String -Pattern "3" -NotMatch
1
2
4
5
针对您的情况,答案如下:
Get-Content .\logerror.txt | Select-String -Pattern "ERR*" | Select-String -Pattern "ERR-[01]0" -NotMatch
Where-Object
。Write-Output @"
OK
ERR-10
OK
OK
ERR-20
OK
OK
ERR-10
ERR-00
"@ > "C:\temp\log.txt"
# Option 1.
Get-Content "C:\temp\log.txt" | Where-Object { $_ -Match "ERR*"} | Where-Object { $_ -NotMatch "ERR-[01]0"}
# Option 2.
Get-Content "C:\temp\log.txt" | Where-Object { $_ -Match "ERR*" -and $_ -NotMatch "ERR-[01]0"}
grep -v "ERR-[01]0"
,也就是说,你可以使用正则表达式来从输出中排除行。我猜你已经知道如何模拟没有-v
参数的grep
了。 - Gebb
-NotMatch
运算符接受正则表达式。 - JosefZ