LINUX.ORG.RU

Как разложить вывод MySQL в Bash

 ,


0

1
RES=$(mysql -h192.168.1.200 -Dbd -uuser -ppass  -e  "SELECT exec_type, exec_str  FROM online WHERE MACaddress ='d4:3d:7e:51:8d:e6'");

echo $RES
echo `echo $RES | awk '{print $4}'`

{print $4} - мне выводит 4 слово, но в выводе слово с пробелами , поэтому я получаю только первое слово из нужного вывода 4.

Как мне получить всю строку из ячейки «exec_str» ?

UPD. Вот пример вывода:

$echo $RES 
exec_type exec_str значение1  значение2 и его текст с пробелами

$echo `echo $RES | awk '{print $4}'`
значение2

Где:
exec_type = «значение1»
exec_str = «значение2 и его текст с пробелами»

★★

Последнее исправление: abbat81 (всего исправлений: 3)

Ну добавьте mysql опцию ″-B″ и «скажите» ″awk″, что поля разделяются табуляцией.

mky ★★★★★
()
Ответ на: комментарий от mky
RES=$(mysql -h192.168.1.200 -Dbd -uuser -ppass -B -e  "SELECT exec_type, exec_str  FROM online WHERE MACaddress ='d4:3d:7e:51:8d:e6'");

UWW=`echo $RES | awk '{ print( "\t", $4 ); }'` 

Не помогло

abbat81 ★★
() автор топика
Ответ на: комментарий от abbat81

Неужели нет способа нормального вывода?

Есть. Хотя, смотря что ты подразумеваешь под нормальным.

$ echo "`mysql -hlocalhost -Dstat -p12345 -B -e 'select * from my limit 5'`" | awk -F '\t' '{print $4}'
dt
2012-08-20 10:49:12
2012-08-20 10:44:35
2012-08-20 10:50:37
2012-08-20 10:45:03
2012-08-20 10:49:50
$

Про вывод результата mysql через echo обсуждалось тут: глупый вопрос про bash

shrub ★★★★★
()

ты привёл пример запроса, но не пример данных, получающихся в результате этого запроса
давай вместе подумаем, кто ты после этого

zolden ★★★★★
()
Ответ на: комментарий от zolden

Вот так выглядит :

$echo $RES 
exec_type exec_str значение1  значение2 и его текст с пробелами


$echo `echo $RES | awk '{print $4}'`
значение2

Где:
exec_type = «значение1»
exec_str = «значение2 и его текст с пробелами»

abbat81 ★★
() автор топика
Последнее исправление: abbat81 (всего исправлений: 1)
Ответ на: комментарий от abbat81

Почему ты сразу не написал, что тебе нужно не понять как это всё работает, а нужно чтобы кто-то сделал это за тебя?

Ок.

Тебя не напрягло, что в выводе у тебя название полей идут в одну строчку со значениями этих полей? Я тебе выше ссылку дал на обсуждение этого момента. Ты прочитал?

А если двойные кавычки использовать, у тебя будет выводить уже в две строки или как-то по другому?

$echo "$RES"
exec_type exec_str 
значение1  значение2 и его текст с пробелами

А теперь, давай попробуем использовать для разделения полей табуляцию, как тебе неоднократно предлагали, но ты почему-то упорно это игнорируешь. Получилось вот так?

$echo `echo "$RES" | awk -F '\t' '{print $4}'`
значение2 и его текст с пробелами

Надеюсь, ты не забыл перед этим добавить '-B' к запросу, а то опять внезапно не то выведет.

shrub ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.