日志行格式:
Xxx x xx:xx:xx xmmxxx XXXXXX: XXXXXXX:XXX: xxx_Mxxx_Xxxxxx_mxxxxxmmxx [XXX xxxx.
我想从'_m'
行尾提取,'_'
删除'm'
.
正则表达式的新手...
谢谢!
如果您的工具/语言支持后视,则此方法有效:匹配第一个_m
until EOL
。也忽略领先_
(?<=_)m.*
用 grep 测试:
kent$ echo "Xxx x xx:xx:xx xmmxxx XXXXXX: XXXXXXX:XXX: xxx_Mxxx_Xxxxxx_mxxxxxmmxx [XXX xxxx."|grep -Po '(?<=_)m.*'
mxxxxxmmxx [XXX xxxx.
与sed
:
sed -n 's/^.*_\(m.*$\)/\1/p' file
这很容易:
此示例是用 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);
希望这对您的追求有所帮助。