日志行格式:
Xxx x xx:xx:xx xmmxxx XXXXXX: XXXXXXX:XXX: xxx_Mxxx_Xxxxxx_mxxxxxmmxx [XXX xxxx.
我想从'_m'
中提取到该行的末尾,删除'_'
之前的'm'
。
正则表达式的新手......
谢谢!
答案 0 :(得分:1)
如果您的工具/语言支持后视,则可行:匹配第一个_m
到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.
答案 1 :(得分:1)
使用sed
:
sed -n 's/^.*_\(m.*$\)/\1/p' file
答案 2 :(得分: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);
希望这能帮助你完成任务。