使用grep筛选CSV文件第一列数值大于10且小于99的行
原有命令问题说明
你当前使用的命令存在两个核心问题:
- 没有锚定行首,正则会匹配任意列出现1开头数字的行,无法限定只判断第一列的数值
- 正则规则未匹配
>10且<99的数值范围,会命中10、122这类不符合要求的数值
使用grep的正确实现
利用正则锚定行首,分范围匹配第一列的合法数值,命令如下:
grep '^\(1[1-9]\|[2-8][0-9]\|9[0-8]\),' demographic_info.csv
正则逻辑说明:
^锚定行首,确保匹配的是第一列内容1[1-9]匹配11~19的数值[2-8][0-9]匹配20~89的数值9[0-8]匹配90~98的数值- 末尾的逗号确保匹配的是第一列的完整值,避免误判三位及以上数值的前两位
更简便的替代方案
如果允许使用awk,按字段做数值判断逻辑更直观,不易出错:
awk -F, '$1>10 && $1<99' demographic_info.csv
该命令直接指定逗号为字段分隔符,对第一列做数值比较,自动输出符合条件的行。
内容的提问来源于stack exchange,提问作者Merinoide
相关产品推荐
相关产品推荐

