推荐使用csvkit、mlr或awk/cut处理CSV:csvkit适合快速查看筛选,mlr适合复杂分析如计算和聚合,awk/cut作为无依赖兜底方案。

linux 下查看和过滤 CSV 文件,不用打开 excel 或写脚本,用命令行就能又快又准。
用 csvkit 看得清、筛得准
csvkit 是专为 CSV 设计的命令行工具集,安装后能自动识别分隔符、处理引号、跳过空行,比原生 awk/sed 更靠谱。
- 装它:pip install csvkit(推荐用用户级安装:pip install –user csvkit)
- 看前 5 行:csvlook -n 5 data.csv(带行号、对齐整齐,适合扫一眼结构)
- 查某列含关键词的行:csvgrep -c “name” -m “Alice” data.csv(-c 指定列名,-m 匹配文本)
- 按数值列排序:csvsort -c “age” –reverse data.csv(支持多列、升/降序、数字识别)
没装 csvkit?用 awk + cut 快速应急
系统自带工具也能干,但要注意 CSV 有逗号在字段里(比如 “Smith, Jr.”,25)时,cut 会切错。简单干净的 CSV 可以直接上。
- 只看第 1、3 列:cut -d’,’ -f1,3 data.csv | head -10
- 筛选第 2 列等于 100 的行:awk -F’,’ ‘$2 == 100 {print}’ data.csv
- 打印第 4 列大于 50 且第 1 列不为空:awk -F’,’ ‘$4 > 50 && $1 != “” {print}’ data.csv
带表头的 CSV,用 mlr(Miller) 更顺手
mlr 把 CSV 当成“带字段名的数据库”来操作,语法接近 sql,支持类型推断、计算列、分组聚合,适合稍复杂的分析。
- 装它:sudo apt install miller(ubuntu/debian)或 brew install miller(macOS)
- 查年龄 > 30 的人,只显示 name 和 city:mlr –csv filter ‘$age > 30’ then cut -f name,city data.csv
- 统计每种 status 出现次数:mlr –csv stats1 -a count -g status data.csv
- 加一列“is_adult”:mlr –csv put ‘$is_adult = $age >= 18 ? “yes” : “no”‘ data.csv
基本上就这些。csvkit 适合日常快速查筛,mlr 适合要算点东西的场景,纯 awk/cut 是兜底方案。选一个装上,比打开 Libreoffice 快十倍。