grepが奇妙に動作します

grepが奇妙に動作します

grepa文字を検索するときの動作は異なります。検索基準に文字が含まれている場合、a他の文字は検索されません。しかし、他のキャラクターについても同様です。なぜ? !

コマンド:grep [aeiou] file1またはgrep [eioau] file1またはの場合、grep [a,e,i,o,u] file1次の出力が表示されます。

Name : file1 
a

注1:出力では、文字「a」が検索文字で強調表示されます(スクリーンショット付き)。

コマンド:grep [eiou] file1または の場合、grep [e,i,o,u] file1次の出力が表示されます。

this is test file.
Name : file1

ノート2:文字「e」と「i」は出力で検索文字で強調表示されます(スクリーンショット付き)。

ファイル1例:

this is test file.
Name : file1
a

スクリーンショット

答え1

a現在のディレクトリに名前がファイルです。に渡されたREを参照していないgrepため、次のことが発生します。

与えられた

grep [aeiou] file1

シェルは[aeiou]これを確認し、有効な(glob)パターンなので、単一の文字ファイルである、、、、、とa一致しようとします。成功すると、引数を一致するファイルに置き換えて、結果全体をコマンドとして実行します。eioua

grep a file1

これにより、表示される出力が提供されます。シェルがパターンと一致しない場合は、変更されないままであることを指摘する必要があります。これは[eiou]明らかな[aeiou]「失敗」があるところでも成功を可能にします。

解決策は、次のように、ファイルではなくパラメータを一重引用符で囲むことです。

grep '[aeiou]' file1

関連情報