Я в настоящее время имею
$ 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, но, я только хотел бы пойти туда, если это не удается.
спасибо!
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
).
Уберите внешнее 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, как уже обсуждалось.