0

私はここで愚かな問題を抱えています。それほど大したことではありませんが、ほぼ毎日持っているので、回避策を探しています。

私は大まかに250テーブルのプロジェクトを扱っています。それらのリストを頻繁に確認する必要がありますが、「showtables;」を起動すると、MySQLは1行に1列を出力します。

ここに簡単なサンプルがあります:

| 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でそれを行うことができる素晴らしいワンライナーを知っているなら、それも問題ありません:)

4

1 に答える 1

1

これを試して:

mysql databasename -NBe 'show tables;' | fmt

これにより、名前が適切な長さの行に結合されます。-wフラグ toを使用して行の長さを調整できますfmt。ただし、新しい列は形成されません。

列を構築するソリューションは次のとおりです。

set -- $(mysql databasename -NBe 'show tables') '' ''
while [[ $# -ge 3 ]]; do
    printf "| %-20s | %-20s | %-20s |\n" "$1" "$2" "$3"
    shift 3
done

読みやすくするために 5 行で記述されていますが、もちろんセミコロンを使用して 1 つの論理行で記述できます。列数を調整したい場合は、空の文字列の数、ループ テスト、フォーマット文字列、printf 引数、およびシフト引数の 5 つの場所で調整する必要があります。列幅を調整したい場合は、フォーマット文字列で繰り返し調整する必要があります。自動計算は含まれません。

于 2012-09-27T12:46:49.110 に答える