2014-10-10 35 views
3

如何使用表格邊界作爲分隔符重定向mysql查詢的輸出? 我嘗試使用此代碼:在Bash中解析MySQL輸出

mysql -u root -h localhost -D cronjob -e "select * from cron_list" > query.txt 

我想到的是輸出,如:

| id | datetime | recurrency |   command   | 
| 1 | 2014-10-10 | daily | bash /media/data/daily.sh | 
| 2 | 2014-10-09 | minutely |   conky   | 

但是當我使用的代碼,它給我像

id datetime recurrency   command   
    1 2014-10-10  daily bash /media/data/daily.sh 
    2 2014-10-09 minutely    conky   

所以輸出,如何我可以將輸出從終端重定向到帶有分隔符的文件中嗎? 對不起,我的英文不好

+3

嘗試使用'-t'參數。 – hjpotter92 2014-10-10 08:37:19

+0

謝謝@ hjpotter92,它的工作:) – 2014-10-10 08:39:22

回答

6

man mysql

--table,以表格形式-t

顯示輸出。這是交互式 使用的默認值,但可用於在批處理模式下生成表格輸出。

注意-t是默認行爲,但不管何時管道到文件。這就是爲什麼在這種情況下,你必須明確說明。


其他有趣的選項,對於其他類型的輸出:

--silent,-s

靜音模式。產量較少。這個選項可以給出多個 次來產生越來越少的輸出。

此選項導致非表格輸出格式和轉義 特殊字符。通過使用原始模式可能會禁用轉義;請參閱 --raw選項的說明。

--skip-列名,-N

不要寫在成績列名。

--html,-H

生成HTML輸出。

+0

我不知道,當時我沒有包括'-t'參數。它給我輸出像'--silent'。順便說一句,感謝您的解釋:) – 2014-10-10 09:06:34

+0

我一直在尋找信息的默認設置,但我找不到任何設置這些默認值。只是猜測:也許你有一個別名? – fedorqui 2014-10-10 09:16:33

+1

*「...以批處理方式生成表輸出」*表示「每當'STDOUT'不是tty」,就像'>'重定向到文件一樣。 – 2014-10-10 12:48:07