
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