mysqlコマンドの実行結果から枠線とカラム名を取り除いて表示する方法を調べたので備忘録がてらまとめておく
やりたいこと
ヘルスチェックや定点観測用の即席スクリプトを書くときなど、mysqlコマンドの実行結果をスリムに表示したいことがある
何もオプションを指定せずにmysqlコマンドでクエリを実行すると、下記のように枠線とカラム名がついてくる
$ mysql --host 127.0.0.1 -u root -e 'select "Hello, world" as "greeting"'; +--------------+ | greeting | +--------------+ | Hello, world | +--------------+
ただデータを眺める分にはこれで良いが、別のプログラムに食わせたいときや値だけが欲しいときに枠線やカラム名が邪魔になる
なので、枠線やカラム名を取り除いて表示させたい
実行結果から枠線を消す方法
mysqlコマンドに --silent
というオプションがあり、これを使うと枠線をommitして表示することができる
help:
$ mysql --help ... -s, --silent Be more silent. Print results with a tab as separator, each row on new line. ...
before
$ mysql --host 127.0.0.1 -u root -e 'select "Hello, world" as "greeting"'; +--------------+ | greeting | +--------------+ | Hello, world | +--------------+
after
$ mysql --host 127.0.0.1 -u root --silent -e 'select "Hello, world" as "greeting"'; greeting Hello, world
実行結果からカラム名を消す方法
mysqlコマンドに --skip-column-names
というオプションがあり、これを使うとカラム名をommitして実行結果のみを表示することができる
help:
$ mysql --help ... -N, --skip-column-names Don't write column names in results. ...
before
$ mysql --host 127.0.0.1 -u root -e 'select "Hello, world" as "greeting"'; +--------------+ | greeting | +--------------+ | Hello, world | +--------------+
after
$ mysql --host 127.0.0.1 -u root --skip-column-names -e 'select "Hello, world" as "greeting"'; +--------------+ | Hello, world | +--------------+
実行結果から枠線とカラム名を両方消す方法
単純に先の2つのオプションを同時に指定すれば良い
before
$ mysql --host 127.0.0.1 -u root -e 'select "Hello, world" as "greeting"'; +--------------+ | greeting | +--------------+ | Hello, world | +--------------+
after
$ mysql --host 127.0.0.1 -u root --silent --skip-column-names -e 'select "Hello, world" as "greeting"'; Hello, world
余談
mysqlコマンドにパイプで続けてコマンドを書くと、実行結果から枠線は取り除いて渡してくれる
小さなプログラムを組み合わせて大きなプログラムを作るための工夫で、Linux哲学ってやつ
続くコマンドなし
$ mysql --host 127.0.0.1 -u root -e 'select "Hello, world" as "greeting"' +--------------+ | greeting | +--------------+ | Hello, world | +--------------+
続くコマンドあり
$ mysql --host 127.0.0.1 -u root -e 'select "Hello, world" as "greeting"' | cat greeting Hello, world