【问题标题】:Perl script Lookup timestamp in a log filePerl 脚本在日志文件中查找时间戳
【发布时间】:2017-02-16 11:25:31
【问题描述】:

我必须对现有的 PERL 脚本进行修改。由于我在 PERL 脚本方面没有经验,所以我用谷歌搜索并进行了更改,但这不起作用。 所以有一部分会检查文件中是否存在特定的时间戳。 代码是

    while (<IN>) {
      if (/timestamp="(\w\w\w) (\d\d) \d\d:\d\d:\d\d (\d\d\d\d)"/ {
        $NowDate=$3.$Month{$1}.$2;
        if ( $NowDate > $StartDate ) {
          print OUT $_;
          while (1) {
            $regel=<IN>;
            if (! defined $regel) {last}
              print OUT $regel;
            }
          }
       }
  }
  • 日志文件中的时间戳 = Feb 15 09:28:13 2017
  • 但升级后时间戳 = 2017-02-15T10:26:14.858

我已经像这样更新了条件,但它不起作用。

if (/timestamp="(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)"/ 

谁能在这里给我一些建议。

【问题讨论】:

    标签: perl perl-module


    【解决方案1】:
    if ( /timestamp="(\d\d\d\d)-(\d\d)-(\d\d)T\d\d:\d\d:\d\d\.\d\d\d"/ ) {
        $NowDate = $1.$2.$3;
        ...
    }
    

    【讨论】:

    • 问题是我没有通过 if 条件。文件中的时间戳为 timestamp="2017-02-16T13:08:34.104"
    • 您错过了模式中的小数秒。立即尝试
    • 我输入了 if 条件,但收到以下错误“在连接 (.) 或字符串处使用未初始化的值”。我必须使用 /.
    • Ilhan:如果你抄袭了我写的东西,那就不可能了。我不知道你说的“我给了使用/”是什么意思
    • 虽然欢迎使用此代码 sn-p,并且可能会提供一些帮助,但它会是 greatly improved if it included an explanation of howwhy 这解决了问题。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人!请edit您的答案添加解释,并说明适用的限制和假设。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 2015-12-12
    • 2013-04-25
    • 2012-03-10
    • 1970-01-01
    • 2017-08-06
    相关资源
    最近更新 更多