2013-04-05 48 views
0

格式的結尾:正則表達式來提取從「_M」輸出日誌文件的每一行內容,日誌行的行

Xxx x xx:xx:xx xmmxxx XXXXXX: XXXXXXX:XXX: xxx_Mxxx_Xxxxxx_mxxxxxmmxx [XXX xxxx. 

我想從'_m'提取到行的末尾,在'm'之前刪除'_'

新正則表達式...

謝謝!

+0

對不起,無法理解。請清楚解釋....謝謝 – 2013-04-05 16:48:12

+0

如果您可以保證在「_m」之前的數據中不會有「_m」,那將會非常簡單。你可以嗎? – 2013-04-05 16:50:39

+0

有多個'm'但沒有'_m'。 – Jim 2013-04-05 16:54:06

回答

1

如果您的工具/語言支持後臺顯示,此工作原理:匹配第一個_mEOL。也忽略使用grep領先_

(?<=_)m.* 

測試:

kent$ echo "Xxx x xx:xx:xx xmmxxx XXXXXX: XXXXXXX:XXX: xxx_Mxxx_Xxxxxx_mxxxxxmmxx [XXX xxxx."|grep -Po '(?<=_)m.*' 
mxxxxxmmxx [XXX xxxx. 
0

這是很容易:

這個例子是用C#編寫,不過正則表達式是相當普遍的,並可能會在任何地方工作:

Regex regex = new Regex(@"_(m.*)"); // If you look for _M the regex should be @"_(M.*)" 

Match match = regex.Match(logLine); 
if (match.Success) 
    Console.WriteLine(match.Groups[1].Value); 

希望這將幫助你在你的追求。

1

隨着sed

sed -n 's/^.*_\(m.*$\)/\1/p' file