3

エラーをスローせずにこのテーブルで grep -v "Africa" を取得できないようです。誰かが Ubuntu の構文を手伝ってくれますか?

どこかにエラーがあり、私の国の 1 つでマクロ地域が定義されておらず (つまり、南北アメリカ、アフリカ、アジア、ヨーロッパ)、それが見つかりません。この結合されたテーブルを 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 "国ごとに地域グループから国、group_concat(地域) を地域として選択;"| grep -v 'アフリカ'

そして、私はエラーが発生します:

エラー 1049 (42000): 不明なデータベース 'use reports' エラー 1046 (3D000) 行 1: データベースが選択されていません

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次に、 2 番目のステートメントが実行される前にデータベース接続が閉じられるため、パイプラインでコマンドを使用して最初のコマンドが 2 番目のコマンドに影響を与えることはできません。それらはまったく異なる接続です。複数のクエリが必要な場合は、ステートメント内でセミコロンを使用します。これを行う前述のコマンドの代替形式は次のようになります。

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 に答える