用于删除 filebeat 中的系统日志日期的正则表达式?

Regular expression to remove syslog date in filebeat?

我想解析一些看起来像

的系统日志行

Oct 20 16:34:59 artguard TTN-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

我想把它们变成

TTN-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

所以我想知道正则表达式应该是什么样子才能让我这样做,因为第一部分每天都会更改,因为它附加在系统日志中。

编辑:为了避免重复,我正在尝试将 REGEX 与 filebeat 一起使用,其中不支持所有正则表达式,如所解释的 here

正则表达式 TTN-\S* 可能是您正在寻找的一种方法,这里是 java-脚本示例。

 var value = "Oct 20 16:34:59 artguard TTN-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var matches = value.match(
     new RegExp("TTN-\S*", "gi")
);
document.writeln(matches);

它主要分为两个部分:

  1. TTN- 匹配 TTN-(显然)
  2. \S* 匹配任何不是白色的字符-space,尽可能多次这样做。

目前,它总是期望在 TTN 之后有一个“-”,但如果您在正则表达式中用“-{01}”替换“-”,它会期望 TNN 可能是破折号后跟 0-n 个字符那不是白-space。您还可以将 \S* 替换为 \w* 以获取所有字母和数字,或者 .* 以获取除行尾 /n 字符之外的所有字符, TNN-\S*[^\s{2}] 也结束与两个 space 的匹配。希望这对您有所帮助。

Regex101

(TTN-.*$)

Debuggex Demo

已解释

1st Capturing Group (TTN-.*$)
    TTN- matches the characters TTN- literally (case sensitive)
    .* matches any character (except for line terminators)
        * Quantifier — Matches between zero and unlimited times, as many times as possible, giving back as needed (greedy)
    $ asserts position at the end of a line
Global pattern flags
    g modifier: global. All matches (don't return after first match)
    m modifier: multi line. Causes ^ and $ to match the begin/end of each line (not only begin/end of string)