パターンに一致する複数の文字列をgrep

パターンに一致する複数の文字列をgrep

さまざまなバージョンのdebディレクトリのリストがあります。私の要件は、一致するバージョンのパッケージを見つけることです。

私が今まで試したことは次のとおりです。

ls debs/* | grep 1.1.16 | egrep -e 'Package1|Package2|package3'

上記のコマンドは、Package1のo / pのみを提供します。

みんな試してみましたオプションここから。しかし、それらのどれも助けませんでした。

ベストアンサー1

まず、解析しないことに関する一般的な警告ls。つまり、ファイル名が適切に指定されたと仮定すると、次のようにできます。

ls debs/*1.1.16* | grep -E 'Package1|Package2|package3'

ここで唯一の違いは、最初のgrepを使用しなかったことです。これはglobパターンを直接渡すことができるので不要ですls。その後、egrep廃止されたものを使用しましたが、grep -E同じです。

ただし、これは基本的にコマンドと同じです。それでも機能しない場合は、一致するファイルがありません。

$ ls debs/
1.1.16.Package3  Package1.1.1.160  Package1.1.2.16  Package2.1.1.16
$ ls debs/*1.1.16* | grep -E 'Package1|Package2|package3'
debs/Package1.1.1.160
debs/Package2.1.1.16

予想通り、2 つの一致するファイルが表示されます。これがコマンドが印刷する内容です。

$ ls debs/* | grep 1.1.16 | egrep -e 'Package1|Package2|package3'
debs/Package1.1.1.160
debs/Package2.1.1.16

スキーマpackage3は小文字(p代わりにP)なので、grepファイルは表示されません。1.1.16.Package3

おすすめ記事