Powershell 中的 grep

mbx*_*mbx 5 powershell grep

使用 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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我相当确定有一个更简单/更短的版本,也许是单行的。那么,最好的方法是什么grep

小智 14

我通常做这样的事情:

dir *.txt | select-string "keyword|regex"
Run Code Online (Sandbox Code Playgroud)

对于匹配的文件,这会显示文件名、行号和行的内容。这也是管道友好的。我建议您使用以下方法查看 Select-string:

help Select-String -Detailed
Run Code Online (Sandbox Code Playgroud)