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

如何使用egrep实现CSV同一列多区间及并列条件筛选需求

egrep筛选多条件CSV的实现方案

实现命令

方式一:管道叠加egrep实现AND逻辑(兼容性最强,无额外依赖)

将多个需要同时满足的条件拆分为独立的egrep匹配,管道串联即可实现AND逻辑:

egrep '^([^,]*,){2}(2[0-9]|4[0-9]),' titanic-passengers.csv | egrep '^([^,]*,){7}[^,]*(eng.*fra|fra.*eng)[^,]*'

方式二:单条egrep命令实现(需支持PCRE正则,加-P参数即可)

egrep -P '^(?=([^,]*,){2}(2[0-9]|4[0-9]),)(?=([^,]*,){7}[^,]*(eng.*fra|fra.*eng)[^,]*)' titanic-passengers.csv

语法说明

  • 定位列位置:([^,]*,){N} 代表匹配连续N个以逗号结尾的列,^([^,]*,){2} 匹配前两列,后面紧跟的就是第三列(年龄列),^([^,]*,){7} 匹配前七列,后面紧跟的就是第八列(语言列),避免匹配到其他列的符合条件的字符
  • 年龄条件:(2[0-9]|4[0-9]) 匹配20-29或40-49的两位数年龄
  • 语言条件:(eng.*fra|fra.*eng) 覆盖英语、法语的两种先后顺序,保证第八列同时存在两种语言标识

原有命令的问题修正

  • 年龄部分的[2-0][0-9]写法错误:字符类范围必须从小到大,2-0是无效范围,且未固定第三列位置,会错误匹配其他列的数字
  • 语言部分的[eng.*]是字符类语法,仅匹配e、n、g、.、*单个字符,无法匹配完整的语言标识,也未固定第八列位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:36:03