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

AWK分割斜杠前后数值的实现方法求助

我来帮你解决这个问题!你的核心需求是从带Min/Max的行里拆分出两个数值并对应输出,其实不用串这么多管道命令,用AWK就能一步搞定,这里给你两种实用的实现方案:

方法一:利用固定字段位置(适合格式稳定的场景)

你的目标行格式非常固定,字段划分清晰:
Min/Max 推理时间 : 70 ms / 290 ms
这里第4个字段就是Min对应的数值,第7个字段是Max对应的数值,直接提取即可:

awk '/Min\/Max/ {print "Min : " $4; print "Max : " $7}' scores.csv

运行后就能直接得到你想要的输出:

Min : 70
Max : 290

方法二:正则捕获组(更鲁棒,适配格式微调场景)

如果担心后续文本格式有小变动(比如字段位置移位),可以用AWK的match函数配合正则捕获组精准提取数值——只要数值是数字 ms / 数字 ms的格式,不管前后文本怎么变都能匹配:

awk '/Min\/Max/ {match($0, /([0-9]+) ms \/ ([0-9]+) ms/, res); print "Min : " res[1]; print "Max : " res[2]}' scores.csv

这里的正则([0-9]+)会把两个数值分别捕获到数组res的第1、2位,直接输出就行。

补充:你的原命令问题在哪?

你原来的命令最后一步awk 'BEGIN{FS=":"}{print $2}'得到的是70 / 290这样的字符串,但没有进一步拆分斜杠前后的内容。如果非要基于原命令修改,也可以在最后加一步AWK处理,但这种多管道方式既不高效也不简洁,更推荐前面的单AWK方案:

cat scores.csv | awk '/\//' | sed 's/ms//g' | awk 'BEGIN{FS=":"}{split($2, arr, /\/\s*/); gsub(/^ +| +$/, "", arr[1]); gsub(/^ +| +$/, "", arr[2]); print "Min : " arr[1]; print "Max : " arr[2]}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:34:11