web-dev-qa-db-ja.com

アスタリスクがgrepで機能しない

以下の例のように、*kiを検索しましたが、最初の3行が返されているはずです。一致するkiがない場合に最後の行が返される理由はわかりません。

$ grep "ki*" trial_file.txt
kartik,27,Bangalore,Karnataka
pulkit,25,Bangalore,Karnataka
kit,28,Bangalore,Karnataka
kush,24,Pennsylvania,Philadelphia

ここではシェルスタイルのワイルドカードを期待していると思いますが、得られるのは正規表現です。 ki*を検索するとき、リテラルkの後に0個以上のiが続くことを求めています。

最初の行にも「ki」は含まれていません。

これを正しく行う方法は、正確に一致させようとしているものによって異なります。

上記でコメントしたように、grep "ki"が必要な場合もありますが、「ki」で始まる行のみを一致させる場合は、grep "^ki"が必要です。
^は行の始まりを示します。

10
mjb2kmn