Shell Daily 2025-12-28: 文本对齐 (Column)

Shell Daily 2025-12-28: 文本对齐 (Column)

作为工程师,我们每天都要和各种纯文本输出打交道。你是否经历过这种痛苦:查看 CSV 文件或自定义日志时,因为每列长度不一,导致整个屏幕的数据像乱码一样挤在一起,看得头晕眼花?

别急着把数据导入 Excel。在 Shell 里,只需要一个命令就能瞬间把杂乱的文本变成整齐的表格——它就是 column

怎么用

column 命令专门用于格式化输入。最常用的组合是 -t(创建一个表格 table)和 -s(指定分隔符 separator)。它会自动计算每一列所需的最大宽度,并对齐输出。

  • 语法column -t -s "," file.txt
  • 兼容性BSD/Linux 通用。属于 util-linux 包,几乎所有发行版预装。

适用场景

  • 快速预览:在终端直接阅读 CSV 或 TSV 文件。
  • 生成报告:编写监控脚本时,将杂乱的检测结果格式化为易读的表格发送到 Slack 或邮件。

示例 1:拯救 CSV 阅读体验

假设你有一个 users.csv,里面混杂着长短不一的邮箱和 ID,直接 cat 简直是灾难:

# 原始输出:乱成一团
$ cat users.csv
id,name,email,role
1,admin,root@localhost,superuser
102,john_doe,john.doe@company.com,editor
5,bot,bot@ci-system.internal,bot

# 使用 column 瞬间变身 Excel 视图
# -s "," 表示用逗号分割列,-t 表示对齐
$ column -t -s "," users.csv
id   name      email                     role
1    admin     root@localhost            superuser
102  john_doe  john.doe@company.com      editor
5    bot       bot@ci-system.internal    bot

示例 2:美化自定义脚本输出

比如你写了一个检查磁盘和内存的脚本,输出是空格分隔的,但因为数字位数不同导致没法对齐。用管道接一个 column -t 就能完美解决:

# 脚本产生的数据流
{
    echo "HOST STATUS LOAD MEMORY"
    echo "web-01 OK 0.5 64G"
    echo "db-master-prod WARNING 12.4 256G" 
} | column -t

# 输出结果:自动计算最长字段宽度(比如 db-master-prod)并对齐
HOST            STATUS   LOAD  MEMORY
web-01          OK       0.5   64G
db-master-prod  WARNING  12.4  256G

(注:如果你不需要指定分隔符,默认通过空格分列,直接用 column -t 即可。)

posted @ 2025-12-28 15:41  Terrasse  阅读(2)  评论(0)    收藏  举报