3

我似乎无法在这张桌子上得到 grep -v "Africa" 而不会抛出错误,有人可以帮助我在 Ubuntu 中使用语法吗?

某处出现错误,我的一个国家没有定义宏观区域(即美洲、非洲、亚洲、欧洲),我找不到它。我需要对这个连接表进行 grep 以查看哪个国家/地区只有子区域。

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 "select country, group_concat(region) as region from regions group by country;"| grep -v '非洲'

我得到了错误:

错误 1049 (42000):未知数据库“使用报告”第 1 行错误 1046 (3D000):未选择数据库

4

1 回答 1

3
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'
于 2011-05-02T22:22:21.060 回答