grep キャレットが効果がないようです。

grep キャレットが効果がないようです。

私はカラットが」行の始まり「拡張POSIX正規表現を使用します。

ところで使用してみるとgrep予期しない動作が発生します。

使っています牛に似た一種の栄養 grep 2.5.4存在するUbuntu 10.04ルシドリンス

私は文章を反響する」こんにちはその後、grep検索クエリにパイプを接続します。ゼロ個以上の空白文字の後に文字が続きます。時間":

echo ' hello' | grep -E '[:space:]*h'
hello

grep大丈夫です。

パターンだけをマッチさせたいことを示すためにカラットを追加すると、ゼロ個以上の空白文字の後に文字が続きます。時間文字列の先頭に":

echo ' hello' | grep -E '^[:space:]*h'

一致するものはありません。文字列が次から始まるので、一致したいです。スペース続いて時間

このカラットが一致を防ぐのはなぜですか?

ベストアンサー1

別の括弧ペア内で使用する必要があるスペースを見つけるには、[:space:]次のようにします[[:space:]]。あなたは表現したいかもしれませんgrep -E '^[[:space:]]*h'

現在の失敗理由を説明してください。

現在の状態には、、、、、、などの文字を検索するための文字クラスが含まれています。ここでは、[:space:]*h0を含む複数回発生し、続いています。これは文字列とよく一致しますが、実行すると空白ではなくとのみ一致することがわかります。:spacehgrep -oh

最初にキャレットを追加すると、その文字の1つがh文字列の先頭にある必要がありますが、文字列の先頭にその文字の1つもないため、一致しません。

おすすめ記事