颜色突出显示选择字符串 powershell

Fir*_*ser 2 windows powershell command-line

我有一个很大的日志文件(.log)。我试图找到一些需要突出显示的关键字,以便我可以更快地跳过日志中的其他行。但是,我不想只过滤选择字符串,而是突出显示选择字符串。另外,我对Powershell一无所知,到目前为止,我通过谷歌搜索得到了以下命令。

C:\users\proto> cat txtlog.log select-string "Valid" | write-host -foregroundcolor red
Run Code Online (Sandbox Code Playgroud)

它不会输出我想要的内容,因为它只返回红色的“有效”行,而不返回其他行。

Red*_*dio 5

从这里添加格式颜色函数:

function Format-Color([hashtable] $Colors = @{}, [switch] $SimpleMatch) {
    $lines = ($input | Out-String) -replace "`r", "" -split "`n"
    foreach($line in $lines) {
        $color = ''
        foreach($pattern in $Colors.Keys){
            if(!$SimpleMatch -and $line -match $pattern) { $color = $Colors[$pattern] }
            elseif ($SimpleMatch -and $line -like $pattern) { $color = $Colors[$pattern] }
        }
        if($color) {
            Write-Host -ForegroundColor $color $line
        } else {
            Write-Host $line
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,将输出通过管道传输到 Format-Color:

cat txtlog.log | Format-Color @{ 'Valid' = 'Red' }
Run Code Online (Sandbox Code Playgroud)

带有“Valid”一词的行将以红色显示,而其他行将以默认颜色显示。