You need to enable JavaScript to run this app. 如何在PowerShell中输出正则匹配项之前的指定关联行内容
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中输出正则匹配项之前的指定关联行内容

PowerShell 实现方案

下面提供两种常用实现方式,均可适配任意数量的重复结构,自动过滤无对应Secret Key的Application Name条目:


方法1:逐行遍历法(推荐大文件使用)

该方案逐行读取文件,内存占用极低,逻辑清晰易修改:

# 定义临时变量存储上一行内容
$lastAppLine = $null

# 逐行处理目标文件
Get-Content .\example.txt | ForEach-Object {
    # 当前行匹配Secret Key格式时,输出上一行的Application Name和当前行
    if ($_ -match '^\s*Secret Key:') {
        $lastAppLine
        $_
    }
    # 更新上一行记录
    $lastAppLine = $_
}

# 如需将结果保存到新文件,在末尾追加:| Out-File .\output.txt -Encoding UTF8

方法2:正则全文匹配法(代码更简洁)

适合文件体积不大的场景,一次性匹配所有符合要求的连续条目:

# 读取文件全部内容
$fileContent = Get-Content .\example.txt -Raw

# 正则匹配连续的Application Name+Secret Key行
$matchedItems = [regex]::Matches($fileContent, '(^\s*Application Name:.*\r?\n\s*Secret Key:.*)', [System.Text.RegularExpressions.RegexOptions]::Multiline)

# 输出所有匹配结果
$matchedItems.Value

# 如需保存到文件同样追加:| Out-File .\output.txt -Encoding UTF8

自定义调整提示

如果需要对Application Name的取值加额外过滤规则(比如仅匹配名称以XYZ开头的条目),只需调整对应正则即可,比如方法1可以修改为:

if ($lastAppLine -match '^\s*Application Name:\s*XYZ' -and $_ -match '^\s*Secret Key:')

内容的提问来源于stack exchange,提问作者Ketul Radadiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 03:18:03