gpt4 book ai didi

powershell - 在 Powershell Select-String 中使用上下文

转载 作者:行者123 更新时间:2023-12-03 09:48:53 30 4
gpt4 key购买 nike

我有一个脚本,用于在目录中的文件内容中搜索一系列字符串(存储在 txt 文件中)。我想修改它以列出找到的字符串周围的文本(这些是常规字符串,而不是正则表达式)。我玩了很多,似乎我需要使用 -Context,但我不确定如何从中获取文本。

此外,我正在搜索的文件可能没有换行符,因此如果它可以在搜索词前后获取 xx 个字符,那就更好了。

这是我到目前为止所拥有的(我省略了循环文件部分):

$result = Get-Content $file.FullName | Select-String $control -quiet  
If ($result -eq $True)
{
$match = $file.FullName
"Match on string : $control in file : $match" | Out-File $output -Append
Write-host "Match on string : $control in file : $match"
}

如果它可以写上下文,那就完美了。似乎我需要使用 $_Matches,但不确定如何使用。

最佳答案

$control只是一个正则字符串,你能把它变成正则表达式吗?

$n  = 3
$re = "(.{0,$n})(" + [Regex]::Escape($control) + ")(.{0,$n})"

$result = (Get-Content $file.FullName) -match $re

有了这个, $matches哈希表应该可以让您访问 $n匹配前后的字符:
if ($result.Length -gt 0) {
echo "Before: $($matches[1])"
echo "After: $($matches[3])"
}

关于powershell - 在 Powershell Select-String 中使用上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14147420/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com