удар: вывод \n \t символы от запроса mysql

Я в настоящее время имею

$ 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, но, я только хотел бы пойти туда, если это не удается.

спасибо!

1
задан user401090 28 July 2010 в 16:13
поделиться

2 ответа

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

(обратите внимание на четверной escape в вызове sed).

1
ответ дан 2 September 2019 в 22:39
поделиться

Уберите внешнее echo:

echo "use joomla; describe jos_content" | mysql --batch -u root -ppassword

echoвывод приводит к тому, что все пробелы сворачиваются.

EDIT: MySQL не выводит экранированные символы, которые вы хотите (например, литера \ затем t). В bash (вы должны использовать printf bash), вы можете получить приблизительный результат с помощью:

printf '%q' "$(echo 'use mysql; describe user;'|mysql --batch -u root '-ppassword')"

Это выведет начиная с:

$'Field\tType\tNull\tKey\tDefault\tExtra\n

Это цитирование символов для использования в оболочке. Вы также можете использовать sed, как уже обсуждалось.

1
ответ дан 2 September 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: