空白だけのフィールドを検索したいです。これら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]
^I
Tabgrep
-P
\t
\s
s
'^\s*'"$foo"'\s+\('
2番目の例の代替(-P
二重引用符ではなく一重引用符を使用)も同じことを行います。前者はgrep
あまり逆追跡されないので、技術的に良いですが、実際には重要ではありません。
(*)現象:バックスラッシュ括弧が機能します。二重引用符が必要なので、シェルはバックスラッシュを食べません。 egrep
一般的に簡単です。