1

假设我有 2 个字段以微秒为单位显示纪元时间:

1318044415123456,1318044415990056

我想做的是:

  1. 从两个字段中删除公共部分:“1318044415”
  2. 得到剩余部分的差值:990056 - 123456 = 866600

我为什么要这样做?因为 awk 使用浮点 IEEE 754 但不是 64 位整数,所以我需要以微秒为单位获取 2 个事件的纪元时间差异。

谢谢你的帮助!

编辑:

最后我找到了 Awk 在 Snow Leopard 10.6.8 上可以处理的最大数量:9007199254740992

试试这个:echo '9007199254740992' | awk -F ',' '{print $1 + 0}'

awk 的版本是20070501(生产者awk --version

4

1 回答 1

1

这是一个满足您要求的 awk 脚本:

BEGIN {
    FS = ","
}
{
    s1 = $1
    s2 = $2
    while (length(s1) > 1 && substr(s1, 1, 1) == substr(s2, 1, 1))
    {
        s1 = substr(s1, 2)
        s2 = substr(s2, 2)
    }
    n1 = s1 + 0
    n2 = s2 + 0
    print n2 - n1
}
于 2011-10-08T04:00:05.893 回答