Grep - ^(\s*$) および ^\s*$

Grep - ^(\s*$) および ^\s*$

空白だけのフィールドを検索したいです。これら2つのコマンドは、計算時に異なる結果を提供します。

grep "^\s*$" -E -c
grep "^(\s*$)" -E -c

もう一つのこと。 「ちょうど空白か何か」を言う正しい方法は何ですか?

grep "^(\s*$|STRING)" -E -c

または

grep "(^\s*$|^STRING)" -E -c

それとも同等ですか?

答え1

一般はgrep理解できない\sか、かっこで囲みます。 (*)grep -P可能であれば、何が欲しいのか、またはgrep -E/とegrep書いてください(どこにいないかわからない)。また、二重引用符を使用すると、一部のシェルでは処理されたままになります。実際に変数を挿入する必要がない場合(たとえば、中間引数で引用符を切り替える)、シェルでは正規表現に一重引用符を使用する必要があります。\s[ ^I]^ITabgrep-P\t\ss'^\s*'"$foo"'\s+\('

2番目の例の代替(-P二重引用符ではなく一重引用符を使用)も同じことを行います。前者はgrepあまり逆追跡されないので、技術的に良いですが、実際には重要ではありません。

(*)現象:バックスラッシュ括弧が機能します。二重引用符が必要なので、シェルはバックスラッシュを食べません。 egrep一般的に簡単です。

関連情報