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

Published: Tags: MYSQL SHELL

正常情况下,直接在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把输出重定向到文件即可。 查看内容就会发现保留了表格样式,当然这样的方法比较麻烦,但不失为一个解决方案。