BashスクリプトのMySQL出力形式

BashスクリプトのMySQL出力形式

私は取得する型が全く異なるmysqlクエリを使用するbashスクリプトを書いています。

尋ねる:

root@debian:~# mysql -u root -ptoor super_market -h 0 -e "select * from items;" 
+---------+------------+--------+-------------+-------+
| item_id | item_name  | weight | brand       | price |
+---------+------------+--------+-------------+-------+
|       1 | Milk       |   2.00 | Nestle      |  2.00 |
|       2 | Cheese     |   2.50 | Amul        |  6.00 |
|       3 | Chips      |  25.00 | Lays        |  3.00 |
|       4 | Coke       |   5.00 | Coke Cola   |  3.50 |
|       5 | Engage     |   5.00 | Deo         |  3.50 |
|       6 | Engage     |   5.00 | Deo         |  3.50 |
|       7 | Ear phones |   4.00 | Skull Candy | 32.30 |
+---------+------------+--------+-------------+-------+

使用する形式列-tコマンド出力形式をソートしています。

root@debian:~# mysql -u root -ptoor super_market -h 0 -e "select * from items;" | column -t
item_id  item_name  weight  brand   price
1        Milk       2.00    Nestle  2.00
2        Cheese     2.50    Amul    6.00
3        Chips      25.00   Lays    3.00
4        Coke       5.00    Coke    Cola   3.50
5        Engage     5.00    Deo     3.50
6        Engage     5.00    Deo     3.50
7        Ear        phones  4.00    Skull  Candy  32.30

バッシュスクリプト 上記のコマンドを使用してbashスクリプトを試しました。

root@debian:~# cat test
#!/bin/bash

while read -r output;
do
    echo $output | awk '{print $4}'
    #do something
done< <(mysql -u root -ptoor super_market -h 0 -e "select * from items;" | sed 1d |column -t)

出力

root@debian:~# ./test
Nestle
Amul
Lays
Coke
Deo
Deo
4.00

しかし、予想出力:

Nestle
Amul
Lays
Coke Cola
Deo
Deo
Skull Candy

はい!あなたは使用して話すことができます製品からブランドを選択してください。たとえば、私はリアルタイムでまったく異なるコマンドを使用します。

ヒントや助けが必要ですか?

ベストアンサー1

mysqlこのフラグと一緒に使用すると、-tmysqlのクエリからbash出力に直接出力を取得できます。

sedその後、またはを使用してawk地平線と 'を削除して区切り記号を整理できます|

おすすめ記事