You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell实现CSV文件列数据指定模式匹配筛选

PowerShell筛选指定模式INSTANCE行的正确实现

原有代码问题

  • 逻辑运算符使用错误:原代码用-and要求同一个INSTANCE值同时包含_L_NPRDPRF和_L_NPRDSTD两个互斥的子串,不可能有符合条件的行,因此返回空结果
  • 匹配规则覆盖不全:原代码仅写了2种后缀的匹配,没有覆盖要求的4种目标模式,也没有校验前缀、环境位(L/K/M)的规则,容易误筛不符合要求的行

实现方案

方案1:正则一次性匹配(推荐,简洁高效)

直接通过正则表达式完整匹配4种命名规则,自动排除K/M等非L环境位、前缀不符合、后缀不对的实例:

$GetData = Import-Csv -Path "C:\DIAG_2.csv" | Select SYMM_ID,DATE,INSTANCE,'Total Response Time'

$Local_Data = $GetData | Where-Object {
    # 正则规则:SG_SG开头 -> 任意长度业务标识 -> _L_环境位 -> 4种允许的后缀 -> 字符串结尾
    $_.INSTANCE -match '^SG_SG_.+_L_(NPRDPRF|NPRDSTD|PRDPRF|PRDSTD)$'
}

正则各段作用:

  • ^SG_SG_:强制字符串以SG_SG_开头,过滤前缀不符合的实例
  • .+:匹配规则中xxxxxxxx对应的任意长度业务标识段
  • _L_:强制匹配L环境位,自动排除样例中K、M环境位的无效行
  • (NPRDPRF|NPRDSTD|PRDPRF|PRDSTD)$:匹配4种允许的后缀,$强制后缀为字符串末尾,过滤后缀带多余字符的实例

方案2:通配符多条件匹配(易读性高)

如果不熟悉正则,用PowerShell原生-like通配符加-or逻辑拼接4种模式即可,效果和正则完全一致:

$GetData = Import-Csv -Path "C:\DIAG_2.csv" | Select SYMM_ID,DATE,INSTANCE,'Total Response Time'

$Local_Data = $GetData | Where-Object {
    $_.INSTANCE -like 'SG_SG_*_L_NPRDPRF' -or
    $_.INSTANCE -like 'SG_SG_*_L_NPRDSTD' -or
    $_.INSTANCE -like 'SG_SG_*_L_PRDPRF' -or
    $_.INSTANCE -like 'SG_SG_*_L_PRDSTD'
}

两种方案都可以直接运行,筛选后$Local_Data变量中存储的就是所有符合要求的行,可直接导出为CSV或做后续处理。

内容的提问来源于stack exchange,提问作者Empty Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:54:21