簡體   English   中英

在正則表達式中使用grep

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM