[英]Using grep with regex
我正在嘗試從exim_mainlog中提取所有采用這種格式的電子郵件主題
T="any possible chars here"
使用我的Centos 6控制台。
我不是regex的專家,我正在使用此命令
# 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! }"
不退還。 如何從我的exim_mainlog返回所有T =“ *”結果?
謝謝!
在這種情況下,指定不需要的字符會更容易:
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
這個怎么樣:
grep -E -o '^T=\"(.*)\"$' exim_mainlog
上面的假設除了文字之外,沒有其他內容( ^
和$
錨點)。
例如:
T="Something i$ h3r3 "^#^*# and h3h3"
grep -P (PCRE)
在這里可能會有所幫助:
grep -Pio ' T=".*?(?!((.*?"){2})*[^"]*$)"' file
在#次匹配之后,基本上匹配"
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.