2013-04-05 26 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