grep 与正则表达式

grep 与正则表达式

我想使用 来匹配文件中以下模式的所有行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]

相关内容