是否可以使用格式表为 powershell 输出仅对某些单词(而不是完整的行)进行着色。例如,此脚本递归扫描文件夹中的字符串,然后使用格式表输出结果。
dir -r -i *.* | Select-String $args[0] |
format-table -Property @{label="Line #"; Expression={$_.LineNumber}; width=6},
Path, Line -wrap
如果能够用特定的颜色来格式化我们正在搜索的单词,那就太好了,这样您就可以准确地看到它在行中的位置。
你可以通过管道将表输入Out-String
,然后使用以下方法将字符串分成几部分写入Write-Host
与-NoNewLine
switch.
像这样的东西:
filter ColorWord {
param(
[string] $word,
[string] $color
)
$line = $_
$index = $line.IndexOf($word, [System.StringComparison]::InvariantCultureIgnoreCase)
while($index -ge 0){
Write-Host $line.Substring(0,$index) -NoNewline
Write-Host $line.Substring($index, $word.Length) -NoNewline -ForegroundColor $color
$used = $word.Length + $index
$remain = $line.Length - $used
$line = $line.Substring($used, $remain)
$index = $line.IndexOf($word, [System.StringComparison]::InvariantCultureIgnoreCase)
}
Write-Host $line
}
Get-Process| Format-Table| Out-String| ColorWord -word 1 -color magenta
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)