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

PowerShell如何定位行内单词位置并提取FAILED列值

PowerShell提取统计结果指定列值方案

定位单行指定位置的单词

要取$RC[1]即Dirs开头行的第7个单词,直接用正则按空白分割字符串即可,PowerShell的-split操作符会自动处理连续的对齐空格,过滤空条目:

# 提取Dirs行的第7个单词(索引从0开始计数,第7个对应索引6)
$dirFailed = ($RC[1] -split '\s+' | Where-Object { $_ })[6]

执行后$dirFailed的返回值就是对应位置的0。

提取FAILED列所有值(推荐)

按固定索引取值容易因为数值带单位、列宽变化出现偏移,推荐先定位表头中FAILED列的位置,再逐行提取对应值,鲁棒性更高:

# 第一步:从表头定位FAILED列的位置
$headerColumns = $RC[0] -split '\s+' | Where-Object { $_ }
$failedColPos = [array]::IndexOf($headerColumns, 'FAILED')

# 第二步:逐行提取对应列的值,跳过表头
$allFailedValues = foreach ($line in $RC | Select-Object -Skip 1) {
    $columns = $line -split '\s+' | Where-Object { $_ }
    # 若需要带单位(比如Bytes行的136.37 m),保留以下判断逻辑
    if ($columns[$failedColPos + 1] -match '^[bkmgt]$') {
        "$($columns[$failedColPos]) $($columns[$failedColPos+1])"
    }
    # 若只需要纯数值,直接返回$columns[$failedColPos]即可,删掉上面的if块
    else {
        $columns[$failedColPos]
    }
}

执行完成后,$allFailedValues数组会按顺序存储Dirs、Files、Bytes三行的FAILED列值,直接用于后续比对即可。

小提示:如果你的$RC是单个多行字符串而非逐行的数组,先执行$RC = $RC -split "r?n"拆分为行数组,再运行上述代码即可。

内容的提问来源于stack exchange,提问作者Vikas Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:39:09