我目前有
$ echo "`echo "use joomla; describe jos_content" | mysql --batch -u root -ppassword`"
我希望输出像这样开始
Field\tType\tNull\tKey\tDefault\tExtra\n
但我得到了
Field Type Null Key Default Extra
此刻我尝试过各种各样的物品。我可以使用mysql --html和sed,但是,如果不能解决这个问题,我只想去那里。
谢谢!
答案 0 :(得分:1)
删除外部回声:
echo "use joomla; describe jos_content" | mysql --batch -u root -ppassword
echo
输出导致所有空格都被折叠。
编辑:MySQL不会输出您想要的转义字符(例如,字面\然后是t)。在bash中(你必须使用bash的printf),你可以得到一个近似值:
printf '%q' "$(echo 'use mysql; describe user;'|mysql --batch -u root '-ppassword')"
将从以下开始输出:
$'Field\tType\tNull\tKey\tDefault\tExtra\n
这是引用用于shell的字符。您也可以使用sed,如上所述。
答案 1 :(得分:1)
sed
是此作业的合适工具,而不是echo
。
echo "use joomla; describe jos_content" | mysql --batch -u root -ppassword \
| sed 's/\t/\\t/g; s/$/\\n/'
或者如果你真的想要一行输出:
echo "use joomla; describe jos_content" | mysql --batch -u root -ppassword \
| sed 's/\t/\\\\t/g' | while read line ; do echo -n $line\\n ; done
(注意sed
电话中的四重转义。)