You need to enable JavaScript to run this app. 如何使用GREP正则筛选CSV中数值在[m,n)区间的对应人名
优惠活动
大模型
产品
解决方案
定价
更多

如何使用GREP正则筛选CSV中数值在[m,n)区间的对应人名

现有命令不符合预期的原因
  • 你切割后输出的字段顺序是姓名,第7列数值,正则没有限定匹配位置,可能会匹配到姓名中包含对应数字的记录,产生误匹配
  • 硬编码的正则4[4-9][0-9]*仅能匹配44开头的正整数,无法适配任意m、n的范围,且没有限定匹配长度,会把440、4400等超出目标范围的数值也匹配到
  • 正则默认是模糊匹配,没有做首尾边界限制,会出现大量误判
优先使用grep的实现方案

使用grep实现需要先把第7列放在输出的最前面,再用正则限定仅匹配行首的数值,同时根据你的m、n值写对应的数值范围正则,举两个常用场景示例:

  1. 筛选第7列≥44且<50的整数,提取对应姓名
cut -d ',' -f 7,3 abc.csv | grep '^4[4-9]$' | cut -d ',' -f 2
  1. 筛选第7列≥100且<250的整数,提取对应姓名
cut -d ',' -f 7,3 abc.csv | grep -E '^(1[0-9]{2}|2[0-4][0-9])$' | cut -d ',' -f 2

注意:如果第7列是带小数的数值,需要调整正则适配小数位,比如筛选≥44.5且<50的数值,正则改为^44\.[5-9][0-9]*|4[5-9](\.[0-9]+)?$

更简便的替代方案

如果数值范围复杂写正则成本高,用awk做数值比较更灵活,不需要调整逻辑直接修改m、n的赋值即可:

awk -F ',' '$7 >= m && $7 < n {print $3}' m=你的m值 n=你的n值 abc.csv

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 23:15:02