Bash 以n列形式输出数据库中的所有表

Bash 以n列形式输出数据库中的所有表,bash,mysql,Bash,Mysql,我这里有个愚蠢的问题。这没什么大不了的,但因为我几乎每天都有,所以我正在寻找解决办法 我正在处理一个大约有250张桌子的项目。我经常需要查看这些列表,但是当我启动“showtables;”时,MySQL每行输出一列 下面是一个快速示例: | contact | | content_footer | | content_footer_translation | | conten

我这里有个愚蠢的问题。这没什么大不了的,但因为我几乎每天都有,所以我正在寻找解决办法

我正在处理一个大约有250张桌子的项目。我经常需要查看这些列表,但是当我启动“showtables;”时,MySQL每行输出一列

下面是一个快速示例:

| contact                              |
| content_footer                       |
| content_footer_translation           |
| content_homepage                     |
| content_homepage_image               |
| content_homepage_translation         |
我想要的是能够通过自己定义n来在n列中显示它,或者更好,n应该以某种方式计算,这样线宽就不会超过X个字符

预期产出:

| contact                              | content_footer                       | content_footer_translation           |
| content_homepage                     | content_homepage_image               | content_homepage_translation         |
我不确定纯粹在MySQL中是否真的有可能做到这一点,但如果您知道一个很好的单行程序可以在Bash中做到这一点,它也很好:)

试试这个:

mysql数据库名-NBe'show tables;'|fmt
这将把名称组合成适当长度的行。您可以使用
-w
标志将行长度调整为
fmt
。不过,它不会形成新的列

生成列的解决方案如下所示:

set--$(mysql数据库名-NBe“显示表”)“”“
而[$#-ge 3]];做
printf“|%-20s |%-20s |%-20s |”\n“$1”$2“$3”
班次3
完成

为了便于阅读,它分为五行,当然也可以用分号在一行逻辑中书写。如果要调整列数,必须在五个位置进行调整:空字符串数、循环测试、格式字符串、printf参数和shift参数。如果要调整列宽,必须在格式字符串中重复调整列宽。不涉及自动计算。

不,我在命令行中使用它,目的是获得所有表的完整视图。有了HTML,它只会更难看:p这很好!如果有人想把它显示为固定宽度的列,我还不接受你的答案