如何使用grep统计CSV文件指定列中字符串的出现次数
仅匹配CSV第三列中"Marie"出现次数的调整方案
方法1:用awk实现(最适配列分隔场景,稳定性高)
直接使用awk按分隔符提取第三列匹配即可,命令如下:
awk -F ',' '$3 ~ /Marie/ {cnt++} END {print cnt}' 你的文件名.csv
参数说明:
-F ','指定逗号为字段分隔符,适配CSV格式$3 ~ /Marie/仅判断第三列是否包含"Marie"字符串,匹配成功则计数加1- 最终输出计数结果,你提供的示例文件运行后会返回
2,完全符合预期
方法2:用grep实现的调整版本
如果需要继续用grep实现,可以通过正则限定仅匹配前两列之后的内容,命令如下:
grep -c "^[^,]*,[^,]*,.*Marie" 你的文件名.csv
参数说明:
- 正则
^[^,]*,[^,]*,匹配行开头的前两列内容,确保后续的"Marie"只出现在第三列及之后,你的场景中第三列是最后一列,完全适用 -c参数直接输出匹配行数,不需要额外管道给wc -l
特殊场景说明
如果你的CSV存在带逗号的被引号包裹的字段,上述基础方法会识别错位,建议使用专用CSV处理工具csvkit实现:
csvgrep -c favourite_person -r 'Marie' 你的文件名.csv | wc -l
该命令会按列名精准匹配,不需要手动计算列序号。
内容的提问来源于stack exchange,提问作者quickhelp
相关产品推荐
相关产品推荐

