パイプできない書式指定文字

パイプできない書式指定文字

マイコンピュータでは、このコマンドはmysql -e "show databases"次の出力を生成します。

$ mysql -e "show databases

+--------------------+
| Database           |
+--------------------+
| information_schema |
| database1          |
| database2          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

ただし、これを任意のコマンドに渡すかファイルにリダイレクトすると、書式は消えます。

$ mysql -e "show databases" | cat

Database
information_schema
database1
database2
mysql
performance_schema
sys

私はフォーマットがstderrを介して行われると思いましたが、そうではありません。

$ mysql -e "show databases" 2>/dev/null

+--------------------+
| Database           |
+--------------------+
| information_schema |
| database1          |
| database2          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

書式設定文字がパイプを通過できないのはなぜですか?この動作を変更できますか?

答え1

MySQLは、パイプが標準出力から別のアプリケーションに変更されると、出力[形式]を変更します。

この形式を維持するには、--tableオプションを使用するか、--tabbedまたはを使用します--vertical

関連情報