格式的結尾:正則表達式來提取從「_M」輸出日誌文件的每一行內容,日誌行的行
Xxx x xx:xx:xx xmmxxx XXXXXX: XXXXXXX:XXX: xxx_Mxxx_Xxxxxx_mxxxxxmmxx [XXX xxxx.
我想從'_m'
提取到行的末尾,在'm'
之前刪除'_'
。
新正則表達式...
謝謝!
格式的結尾:正則表達式來提取從「_M」輸出日誌文件的每一行內容,日誌行的行
Xxx x xx:xx:xx xmmxxx XXXXXX: XXXXXXX:XXX: xxx_Mxxx_Xxxxxx_mxxxxxmmxx [XXX xxxx.
我想從'_m'
提取到行的末尾,在'm'
之前刪除'_'
。
新正則表達式...
謝謝!
如果您的工具/語言支持後臺顯示,此工作原理:匹配第一個_m
至EOL
。也忽略使用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.
這是很容易:
這個例子是用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);
希望這將幫助你在你的追求。
隨着sed
:
sed -n 's/^.*_\(m.*$\)/\1/p' file
對不起,無法理解。請清楚解釋....謝謝 – 2013-04-05 16:48:12
如果您可以保證在「_m」之前的數據中不會有「_m」,那將會非常簡單。你可以嗎? – 2013-04-05 16:50:39
有多個'm'但沒有'_m'。 – Jim 2013-04-05 16:54:06