在Shell输出中保留Mysql的表格样式

SHELLMYSQL2013-11-20 11:15

正常情况下,直接在SHELL中使用mysql命令的话,会输出以下格式的内容:

+----------+-------+-----------------------------+
| ServerId | Users | Ip                          |
+----------+-------+-----------------------------+
|       12 |  7159 | s12.app697459698.twsapp.com |
|       14 |  6432 | s14.app697459698.twsapp.com |
|       15 |  7542 | s15.app697459698.twsapp.com |
|       16 |  8732 | s16.app697459698.twsapp.com |
|       17 |  4724 | s17.app697459698.twsapp.com |
+----------+-------+-----------------------------+

但是使用重定向把内容输出到文件或者用tee命令等,都会变成以下格式的内容:

ServerId   Users   Ip
12         7159    s12.app697459698.twsapp.com
14         6432    s14.app697459698.twsapp.com
15         7542    s15.app697459698.twsapp.com
16         8732    s16.app697459698.twsapp.com
17         4724    s17.app697459698.twsapp.com

我也试过使用错误重定向2>&1但也没用,无奈之下只能是用expect写脚本了:(nice_sql.sh)

#!/usr/bin/expect -f
spawn -noecho mysql -ubake -pfish -Dserver -e "SELECT ServerId,Users,Ip FROM outline"
expect

然后加个可执行权限,使用./nice_sql.sh > nice_out.txt把输出重定向到文件即可。
查看内容就会发现保留了表格样式,当然这样的方法比较麻烦,但不失为一个解决方案。


原文链接: http://blog.jtwo.me/keep-mysql-output-style-in-the-shell-command