bash:输出\ n \ t来自mysql查询的字符

时间:2010-07-28 16:13:02

标签: mysql linux bash format

我目前有

$ 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,但是,如果不能解决这个问题,我只想去那里。

谢谢!

2 个答案:

答案 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电话中的四重转义。)