使用 Powershell 内置函数模拟grep
类似行为的最简单/舒适的方法是什么?
在脚本中我使用类似这样的方法
dir "*.filter" | foreach-object{
$actfile = $_
$readerrorfile = [System.IO.Path]::GetTempFileName()
$found = $false
$content = Get-Content $actfile 2> $readerrorfile
$readerror = Get-Content $readerrorfile
if($readerror -match "Error"){
echo "Error while reading from file $actfile"
echo $readerror
del $readerrorfile
Write-Host "stopping execution"
exit
}else{
del $readerrorfile
if($content -match "keyword|regex"){
echo "found in $actfile"
$found = true;
}
}
}
我确信有一个更简单/更短的版本,也许是一行代码。那么,最好的方法是什么呢grep
?
答案1
我通常会做类似的事情:
dir *.txt | select-string "keyword|regex"
对于匹配的文件,这会显示文件的名称、行号和行的内容。这也是管道友好的。我建议您使用以下方法查看 Select-string:
help Select-String -Detailed
答案2
我发现这是比管道目录更好的替代方案:
findstr“关键字|正则表达式”*.txt
这不存在那个包装问题。