我试图从我的exim_mainlog中提取所有格式为
的电子邮件主题T="any possible chars here"
使用我的Centos 6控制台。
我不是正则表达式的专家,我正在使用此命令
# grep -E -io " T=\"[ A-Za-z0-9-]*+[\s\S]\"" exim_mainlog
然而,它仅返回所有结果的10%,例如像
这样的结果T="Welcome to \"My Concepts Support\""
T="[ TEST ] Do you want play ?"
T="{ another@test! }"
未退回。怎么做从我的返回所有T =“*”结果 exim_mainlog?
谢谢!
答案 0 :(得分:1)
在这种情况下,更容易指定您不想要的字符:
T="[^"]*"
这匹配T="
后跟任何非"
的内容,然后是"
的最终内容。
但是,我注意到在扩展示例中,您嵌入了转义引号。如果你想匹配它们,你需要的东西是:
T="([^"\\]|\\.)*"
匹配:
T=" # as expected
( # either...
[^"\\] # not a " or a \
| # or
\\. # a \ followed by anything
)
* # as many times as you want
" # then the final quote
最后的命令是:
grep -Eo 'T="([^"\\]|\\.)*"' exim_mainlog
答案 1 :(得分:0)
这个怎么样:
grep -E -o '^T=\"(.*)\"$' exim_mainlog
上面假设除了你的文字之外,没有其他内容(^
和$
锚)。
例如:
T="Something i$ h3r3 "^#^*# and h3h3"
答案 2 :(得分:0)
grep -P (PCRE)
可以在这里提供帮助:
grep -Pio ' T=".*?(?!((.*?"){2})*[^"]*$)"' file
甚至匹配#匹配后基本匹配"
。