格式的结尾:正则表达式来提取从“_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