awk:提取2个时间戳列并比较差异

awk:提取2个时间戳列并比较差异

我有一个包含 100 个列的逗号分隔文件,我使用以下命令根据列值过滤结果。

find . | xargs zgrep -i , |  awk '{ FS = "," };{ if (( $3 == "8") && ($14=="1") ) {print $10""$8}}'

作为结果列 10 和 8 的一部分,返回以下结果。这些基本上是毫秒级的时间戳。 yyyymmddhhmmssmmm(+0900 是 JST 并且始终保持不变,mmm 表示 3 位毫秒)

20200428030351464+0900 -> column 10
20200428030351329+0900 -> column 8

现在,有什么方法可以打印同一行中的差异吗?几乎所有情况的差异都会以秒和毫秒为单位,而不是以分钟为单位。 (如果这可以简化的话。

答案1

我认为你的代码应该是这样的

find . | xargs zgrep -i , |
   awk 'BEGIN { FS="," }
        $3 == 8 && $14 == 1 {
            f10=substr($10,13,5);
            f8=substr($8,13,5);
            diff=f10-f8;
            if (diff < 0) { diff+=60000 }
            print diff
}'

以毫秒为单位打印差异,但这未经测试,因为我没有你的数据文件。

相关内容