ファイルのすべての行を次のパターンと一致させたいと思いますgrep
。
Abc::xyz() [18-Feb-15 12:09:16]
grepを使って次の正規表現を考えましたが、一致するものは返されません。正しい正規表現を使用するのに役立ちます。
grep -E "^[:alnum:]::[:alnum:]\(\)[:space:]\[.*\]$" <file_name>
Pythonでは次の正規表現が機能しますが、grepでは機能しません。
^.*::.*\(\) \[.*\]$
答え1
これに固執するには、次のようにします。
grep -E "^[[:alpha:]]+::[[:alpha:]]+\(\)[[:space:]]\[.*\]$"
たとえば、
$ echo "Abc::xyz() [18-Feb-15 12:09:16]" | \
grep -E "^[[:alpha:]]+::[[:alpha:]]+\(\)[[:space:]]\[.*\]$"
出力:
Abc::xyz() [18-Feb-15 12:09:16]
これはより簡単になるかもしれません:
grep -E "^[^:]+::[^(]+\(\) \[[^]]+\]$"
確認する:
$ echo "Abc::xyz() [18-Feb-15 12:09:16]" | grep -E "^[^:]+::[^(]+\(\) \[[^]]+\]$"
Abc::xyz() [18-Feb-15 12:09:16]