Grep на объединенном столе MySQL/Linux

Кажется, я не могу вывести grep -v "Africa" ​​в этой таблице без ошибок, может кто-нибудь помочь мне с синтаксисом в Ubuntu?

Где-то есть ошибка, и в одной из моих стран не определен макрорегион (т. Е. В Америке, Африке, Азии, Европе), и я не могу ее найти. Мне нужно просмотреть эту объединенную таблицу, чтобы увидеть, в какой стране есть только субрегионы.

select country, group_concat(region) as regions from regions group by country;

(нижний колонтитул которого выглядит так)

| Ukraine                   | Eastern Europe,Europe
| United Arab Emirates      | Middle East,Persian Gulf,Western Asia
| United Kingdom            | Europe
| United States             | Americas,North America
| Uruguay                   | Americas,South America
| Uzbekistan                | Asia,Central Asia
| Vanuatu                   | Australasia,Melanesia,Oceania
| Venezuela                 | Amazon,Americas,Andes,South America
| Vietnam                   | Asia,East Asia,Indochina
| Virgin Islands            | Americas,Caribbean
| Wallis and Futuna Islands | Australasia,Oceania,Polynesia
| Yemen                     | Middle East,Persian Gulf,Western Asia
| Zambia                    | Africa,Central Africa,East Africa,Southern Africa
| Zimbabwe                  | Africa,Central Africa,East Africa,Southern Africa  

Я использую:

mysql -u root -pPASS "использовать отчеты"| mysql -u root -pPASS -e "выбрать страну, group_concat(region) в качестве регионов из группы регионов по стране;"| grep -v 'Африка'

И я получаю ошибку:

ОШИБКА 1049 (42000): неизвестная база данных "использовать отчеты" ОШИБКА 1046 (3D000) в строке 1: база данных не выбрана

1 ответ

Решение
mysql -u root -pPASS reports -e "select country, group_concat(region) as regions from regions group by country;" | grep -v 'Africa'

обо всем по порядку: вы неправильно выбрали базу данных. Имя базы данных является позиционным параметром; вам не нужно делать встроенный SQL-оператор.

во-вторых, вы не можете использовать mysql команда в конвейере и первая команда влияет на вторую, поскольку соединение с базой данных закрывается до выполнения второго оператора; это совершенно разные связи. Используйте точку с запятой внутри оператора, если вам нужно несколько запросов. Альтернативная форма вышеупомянутой команды, которая делает это, будет выглядеть так:

mysql -u root -pPASS -e "use reports; select country, group_concat(region) as regions from regions group by country;" | grep -v 'Africa'
Другие вопросы по тегам