在 DBA 日常工作中,经常需要查看各种命令输出,例如数据库连接、磁盘空间、日志统计、监控脚本结果等。但很多 Linux 命令默认输出格式并不适合人工阅读,尤其是 Shell 脚本生成的数据,经常出现字段宽度不一致、列错位的问题。
很多人遇到这种情况,会习惯使用 awk 手动补空格,或者写脚本重新格式化输出。实际上 Linux 自带的 column 命令已经可以完成大部分格式化需求。
column 的作用非常简单:根据指定分隔符,将文本按照列进行整理,并以表格形式输出。它不会修改原始数据,只负责改善终端显示效果,因此非常适合 DBA 临时排查和巡检场景。
基本使用:将普通文本转换为对齐表格
例如有一个文本文件:
oracle1001 running
mysql10002running
redis1003 stopped
直接查看时,由于字段长度不同,可读性较差:
cat user.txt
可以直接使用:
column-t user.txt
输出:
oracle1001 running
mysql10002running
redis1003 stopped
其中 -t 参数表示根据字段自动生成表格格式。
实际工作中,很多 DBA 巡检脚本都会输出类似:
主机 IP 状态
db01 10.10.1.1 OK
db02 10.10.1.2 FAILED
这种结果通过:
cat result.txt | column -t
即可快速变成易读格式。
DBA 最常用场景:整理数据库查询结果
column 最实用的地方,是配合数据库客户端输出。
例如 PostgreSQL 查询当前连接:
psql -A -F "|" -c "
select datname,usename,state
from pg_stat_activity;
" > session.txt
生成结果:
postgres|app|active
postgres|report|idle
直接查看:
column-t -s "|" session.txt
输出:
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
在排查连接数异常时,可以直接得到:
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
使用:
column-t -s "," user.csv
可以快速转换:
id name status
1 tom active
2 jack disable
3 lisa active
这在查看:
- 数据库账号列表;
- 主机巡检结果;
- Zabbix 导出数据;
- Shell 自动生成报表;
时非常方便。
需要注意的是,column 只是简单按照分隔符切割字段,并不是真正的 CSV 解析器。如果 CSV 中存在:
"hello,world"
这种字段内部包含逗号的情况,column -s "," 会解析错误,此时应该使用 Python、csvkit 等专业工具。
结合 Linux 常用命令快速分析
column 经常和其他 Linux 命令组合使用。
例如统计访问日志:
awk '{print $7}' access.log |
sort |
uniq -c |
sort -nr |
head |
column -t
输出:
1200 /api/order
800 /login
500 /query
查看网络连接:
ss -ntp |column-t
查看脚本输出:
./check_mysql.sh | column -t
查看磁盘信息:
df -h | column -t
虽然 df -h 本身已经比较规整,但对于自定义脚本输出效果更加明显。
在 DBA 自动化脚本中的应用
很多数据库巡检脚本最终都会输出类似:
实例 连接数 CPU 状态
orcl 32085%normal
test 5020%normal
如果脚本输出没有固定宽度,可以:
./oracle_check.sh | column -t
直接格式化。
例如:
echo"
oracle 320 normal
mysql 150 warning
redis 80 normal
" | column -t
输出:
oracle 320normal
mysql 150 warning
redis 80normal
这样可以让监控脚本、人工巡检结果更加容易阅读。
常用参数总结
日常 DBA 使用最多的其实只有两个参数:
column-t
表示自动按照空白字符整理成表格。
column-t -s ","
表示按照指定分隔符整理,例如 CSV。
例如:
cat result.csv | column -t -s ","
即可快速查看 CSV 内容。
注意事项
column 最大的优势是简单快速,但它不是数据处理工具。
适合:
- 临时查看;
- 命令输出美化;
- 巡检结果展示;
- 日志统计展示。
不适合:
另外,如果输出内容包含空格,例如:
"New York"
使用默认空格分隔可能导致字段拆开,此时应该选择更明确的分隔符,例如:
column-t -s "|"
配合:
awk -F"|"
生成固定格式的数据。
总结
Linux 中很多小工具并不复杂,但组合起来可以明显提高 DBA 工作效率。
column 最大的价值不是处理文件,而是让各种命令输出变得清晰:
- 数据库连接查看;
- SQL 统计结果;
- 日志分析;
- 巡检脚本;
- 监控输出。
很多时候,一个简单的:
命令 |column-t
就能把原本难以阅读的文本结果,转换成适合人工分析的表格形式。
对于 DBA 来说,这类“小命令”虽然不起眼,但在每天的故障排查和运维工作中,往往比复杂工具使用频率更高。