【问题标题】:Find unique time from log file , linux grep从日志文件中查找唯一时间,linux grep
【发布时间】:2012-10-18 06:03:09
【问题描述】:

我有类似的条目

[NGS|00219|17-10-2012 19:05:43:977|INFO]

在我的日志文件中,如何使用grep或其他linux shell工具在这个日志文件中找到唯一的时间值(不包括毫秒)

【问题讨论】:

  • 不同时间是什么意思?您想要时间戳(不包括毫秒)唯一的所有日志吗?
  • @sampson-chen 是唯一时间,不包括毫秒信息..
  • “时间”是否包括日期?
  • @jordanm 不需要唯一的时间日期..

标签: linux shell grep


【解决方案1】:

这是打印独特时间的一种方法:

awk '!a[substr($2,0,8)]++ { print substr($2,0,8) }' file.txt

【讨论】:

    【解决方案2】:

    当然有很多方法 -- 使用 cutseduniq 怎么样:

     cut -d' ' -f2 logfile | sed -e 's/:[^:]*$//' | uniq
    

    (只取空格后面的东西,去掉最后一个冒号到末尾的所有内容,然后消除重复。)

    或者,只使用seduniq

     sed -e 's/.*\ \(.*\):[^:]*$/\1/' logfile | uniq
    

    【讨论】:

      【解决方案3】:

      此脚本为您提供所有唯一时间戳(仅时间;不包括日期。所有重复的时间戳都将被忽略):

      #!/bin/bash
      
      awk -F'[: ]' '{print $2 ":" $3 ":" $4}' | sort | uniq -u
      

      排序的使用是可选的(因为我假设日志是按时间顺序排列的)

      如果您想要找到这些时间戳的整行,请告诉我。

      【讨论】:

      • awk 可以获得独特的元素。如果gawk可用,你也可以轻松进行排序,不需要3个过程。
      • 很高兴知道,谢谢 =) 我现在正在查看您的解决方案
      • 我的解决方案可能不是他想要的。我假设一个唯一的日期时间,但逻辑仍然相同。
      【解决方案4】:

      这在 awk 中非常简单

      awk -F'|' '{  
                    split($3, a, / /);
                    sub(/:[[:digit:]]+$/, "", a[2]); 
                    arr[a[2]] = 1; 
                 } END { 
                    for (i in arr) 
                       print i 
                 }' file.log
      

      您可以使用sub() 函数删除毫秒,然后将该值作为键添加到数组中。由于数组键是唯一的,这将删除任何重复项。处理后,END 块遍历键并打印它们。

      已更新答案以排除日期。这是通过在时间戳上使用 split() 来删除日期部分来完成的。

      【讨论】:

      • 上次编辑后我的环境没有得到任何输出,你那边呢?
      • @sampson-chen 我搞砸了编辑,感谢您指出。现在已经修复了。
      【解决方案5】:

      也许不是最优雅的:

      awk '{print $2}' log.txt | cut -c 1-8 | uniq
      

      【讨论】:

        【解决方案6】:

        类似于 egrep 命令,可以使用 grep 如下:

        grep -o -E '[[:digit:]]+[:][[:digit:]]+[:][[:digit:]]+' NGS.log|uniq

        【讨论】:

          【解决方案7】:

          我自己找到了一个很好的答案

          egrep -o '[[:digit:]]+[:][[:digit:]]+[:][[:digit:]]+' NGS.log | uniq
          

          【讨论】:

          • 总有不止一种方法可以做到!
          猜你喜欢
          • 2015-12-24
          • 2014-04-29
          • 2017-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-12
          • 1970-01-01
          • 2011-06-07
          相关资源
          最近更新 更多