当前位置:首页>Linux>Linux 实用命令:column —— 将杂乱命令输出快速转换为表格

Linux 实用命令:column —— 将杂乱命令输出快速转换为表格

  • 2026-09-09 04:40:10
Linux 实用命令:column —— 将杂乱命令输出快速转换为表格

在 DBA 日常工作中,经常需要查看各种命令输出,例如数据库连接、磁盘空间、日志统计、监控脚本结果等。但很多 Linux 命令默认输出格式并不适合人工阅读,尤其是 Shell 脚本生成的数据,经常出现字段宽度不一致、列错位的问题。

很多人遇到这种情况,会习惯使用 awk 手动补空格,或者写脚本重新格式化输出。实际上 Linux 自带的 column 命令已经可以完成大部分格式化需求。

column 的作用非常简单:根据指定分隔符,将文本按照列进行整理,并以表格形式输出。它不会修改原始数据,只负责改善终端显示效果,因此非常适合 DBA 临时排查和巡检场景。


基本使用:将普通文本转换为对齐表格

例如有一个文本文件:

oracle1001 running
mysql10002running
redis1003 stopped
YAML

直接查看时,由于字段长度不同,可读性较差:

cat user.txt
BASH

可以直接使用:

column-t user.txt
SQL

输出:

oracle1001   running
mysql10002running
redis1003   stopped
YAML

其中 -t 参数表示根据字段自动生成表格格式。

实际工作中,很多 DBA 巡检脚本都会输出类似:

主机 IP 状态
db01 10.10.1.1 OK
db02 10.10.1.2 FAILED

这种结果通过:

cat result.txt | column -t
BASH

即可快速变成易读格式。


DBA 最常用场景:整理数据库查询结果

column 最实用的地方,是配合数据库客户端输出。

例如 PostgreSQL 查询当前连接:

psql -A -F "|" -c "
select datname,usename,state
from pg_stat_activity;
"
 > session.txt
PHP

生成结果:

postgres|app|active
postgres|report|idle

直接查看:

column-t -s "|" session.txt
SQL

输出:

postgres  app     active
postgres  report  idle

这里:

  • -s "|" 表示指定字段分隔符;
  • -t 表示按照表格显示。

同样的方法也适用于 MySQL:

mysql -N -e "
select user,host,command,count(*)
from information_schema.processlist
group by user,host,command;
" |column-t
SQL

在排查连接数异常时,可以直接得到:

app     10.10.1.5   Query   35
report  10.10.1.8   Sleep   120

相比默认输出,定位问题更加直观。


处理 CSV 和巡检结果

很多 DBA 会将巡检结果导出成 CSV 文件,例如:

id,name,status
1,tom,active
2,jack,disable
3,lisa,active
BASH

使用:

column-t -s "," user.csv
SQL

可以快速转换:

id  name  status
1   tom   active
2   jack  disable
3   lisa  active
BASH

这在查看:

  • 数据库账号列表;
  • 主机巡检结果;
  • Zabbix 导出数据;
  • Shell 自动生成报表;

时非常方便。

需要注意的是,column 只是简单按照分隔符切割字段,并不是真正的 CSV 解析器。如果 CSV 中存在:

"hello,world"
JAVASCRIPT

这种字段内部包含逗号的情况,column -s "," 会解析错误,此时应该使用 Python、csvkit 等专业工具。


结合 Linux 常用命令快速分析

column 经常和其他 Linux 命令组合使用。

例如统计访问日志:

awk '{print $7}' access.log |
sort |
uniq -c |
sort -nr |
head |
column -t
BASH

输出:

1200  /api/order
800   /login
500   /query
BASH

查看网络连接:

ss -ntp |column-t
SQL

查看脚本输出:

./check_mysql.sh | column -t
BASH

查看磁盘信息:

df -h | column -t
BASH

虽然 df -h 本身已经比较规整,但对于自定义脚本输出效果更加明显。


在 DBA 自动化脚本中的应用

很多数据库巡检脚本最终都会输出类似:

实例 连接数 CPU 状态
orcl 32085%normal
test 5020%normal
CSS

如果脚本输出没有固定宽度,可以:

./oracle_check.sh | column -t
BASH

直接格式化。

例如:

echo"
oracle 320 normal
mysql  150 warning
redis  80  normal
"
 | column -t
PHP

输出:

oracle  320normal
mysql   150  warning
redis   80normal
CSS

这样可以让监控脚本、人工巡检结果更加容易阅读。


常用参数总结

日常 DBA 使用最多的其实只有两个参数:

column-t
SQL

表示自动按照空白字符整理成表格。

column-t -s ","
SQL

表示按照指定分隔符整理,例如 CSV。

例如:

cat result.csv | column -t -s ","
BASH

即可快速查看 CSV 内容。


注意事项

column 最大的优势是简单快速,但它不是数据处理工具。

适合:

  • 临时查看;
  • 命令输出美化;
  • 巡检结果展示;
  • 日志统计展示。

不适合:

  • 修改数据;
  • 复杂 CSV 解析;
  • 大规模数据处理。

另外,如果输出内容包含空格,例如:

"New York"
JAVASCRIPT

使用默认空格分隔可能导致字段拆开,此时应该选择更明确的分隔符,例如:

column-t -s "|"
SQL

配合:

awk -F"|"
JAVASCRIPT

生成固定格式的数据。


总结

Linux 中很多小工具并不复杂,但组合起来可以明显提高 DBA 工作效率。

column 最大的价值不是处理文件,而是让各种命令输出变得清晰:

  • 数据库连接查看;
  • SQL 统计结果;
  • 日志分析;
  • 巡检脚本;
  • 监控输出。

很多时候,一个简单的:

命令 |column-t
SQL

就能把原本难以阅读的文本结果,转换成适合人工分析的表格形式。

对于 DBA 来说,这类“小命令”虽然不起眼,但在每天的故障排查和运维工作中,往往比复杂工具使用频率更高。

最新文章

随机文章