column 只负责排版
column 把 CSV 或命令输出变成人眼友好的对齐表格:-t 自动按列对齐、-s 指定分隔符,-o 指定输出分隔符。它不改变内容,只做展示排版,因此很适合贴进工单、邮件与周报。字段内含引号或换行的真正 CSV 需要交给 csvkit、miller(mlr)、visidata 这类解析器,column 处理不了引号转义。
基本信息
| 适用平台 | Linux(util-linux) |
|---|---|
| 语法 | column [选项] [文件] |
| 常用选项 | -t 表格化、-s 输入分隔符、-o 输出分隔符 |
| 搭配 | sort、head、uniq -c 组成排行榜 |
| 替代工具 | csvkit、miller(mlr)、visidata |
典型使用场景
- 磁盘或目录占用排行榜(du 配合 sort 与 column)
- 进程资源占用 Top 表(ps 排序后对齐)
- CSV 报表在终端快速查看与核对
- 把命令输出整理成对齐表格贴进工单
- 多台机器配置差异对齐后肉眼比对
常用示例
常用示例
column -t -s, disk-report.csv # 按逗号分隔并对齐成表格
ps -eo pid,comm,%cpu,%mem --sort=-%cpu --no-headers | head -8 | column -t
(printf 'SITE\tSIZE\n'; du -sh /www/wwwroot/*) | column -t # 表头与数据一起对齐
zcat access.log.gz | awk '{print $1}' | sort | uniq -c | sort -rn | head -10 | column -t
column -t -s: /etc/passwd | head -5 # 冒号分隔的文件同样适用
df -h | column -t # 命令自带表格,对齐后更易读选项与替代工具
| 选项/工具 | 作用 | 适用场景 |
|---|---|---|
| -t | 按列自动对齐 | 最常见的用法,任何分隔文本都能用 |
| -s 分隔符 | 指定输入分隔符(如逗号、冒号) | CSV、passwd 等结构化文本 |
| -o 分隔符 | 指定输出分隔符 | 结果还要喂给后续工具时 |
| -N 列名 | 给无表头的输入命名列(较新版本支持) | 先看 column --help 确认本机是否支持 |
| csvkit / mlr | 真正的 CSV 解析、过滤与统计 | 字段内含逗号或引号时用它 |
| visidata | 交互式表格浏览 | 数据量大、需要边看边筛 |
中英混排时列宽可能不齐(按字符数而不是显示宽度计算):中文列多时可用 printf 定宽输出或直接导出 Markdown 表格,效果更可控。
顺序要摆对:先完成 sort、uniq 之类处理,最后再用 column 对齐;反过来先对齐再排序会把辛苦排好的表格彻底打乱。
输出重定向到文件时,列宽是按执行时的终端宽度计算的,不同环境产出可能不一致:需要稳定结果时先设置 COLUMNS 环境变量再执行。
column 不能正确处理带引号的 CSV 字段:字段内含分隔符或换行时列会被切错,而输出看起来仍像一张表,很容易把错位结果当成正确数据。