パターン内の grep 二重括弧

パターン内の grep 二重括弧
grep "^[[:space:]]*clientPort[^[:alpha:]]" zoo.cfg

これは、設定ファイルからポート番号を含む行を抽出するために使用されるgrepパターンです。

1) 通常、正規表現では、角かっこを使用して、1つの囲まれた文字と一致させます。私はそれをここで見ました:alpha:。 [a-zA-Z]と同じですか?

2)正規表現に二重括弧があるのはなぜですか?

3)[^[:alpha:]]角括弧内のカラット記号は何を意味しますか?

構成ファイルには次の行が含まれています。

clientPort=2181

ベストアンサー1

正規表現ご利用いただけます角かっこ表現構成された要素のコレクションを表します。の構文は、照合要素、照合記号、等価クラス、文字クラス、または範囲式をその中に配置できることBracket Expressionです。[...]...

との間に位置クラス名で構成されるalpha文字クラス名を使用しています。したがって、その間に文字クラス式を使用しているのです。[::][:alpha:]Bracket Expression [[:alpha:]]

[a-zA-Z]一部のロケールでは、文字クラス式が範囲式とは異なります。これが最良の例ですあなたは見ることができます:

$ LC_ALL=en_US.utf8 bash -c 'case b in [A-Z]) echo yes; esac'
yes

文字クラスを使用しても何も提供されません。

$ LC_ALL=en_US.utf8 bash -c 'case b in [[:upper:]]) echo yes; esac'

キャレットが^の先頭にある場合、Bracket Expression式の一致を無効にします。文字クラスに属していないすべての文字[^[:alpha:]]と一致します。[:alpha:]

$ case 1 in [^[:alpha:]]) echo yes;; esac       
yes

おすすめ記事