将文件中的所有Unix时间转换为人类日期

时间:2015-05-10 12:25:46

标签: bash shell unix awk sed

我希望用相同的UNIX时间替换一个JSON数据文件中的所有UNIX时间,然后是人类可读的日期格式。

例如,我想替换" 1234567890123456" (时间以微秒为单位)" 1234567890123456,2009-02-14,00:31:30,sat"。

我试过

Int

但它不起作用。 我是UNIX世界的新手,你能建议我一个解决方案吗?非常感谢你。

cordial性

我附上了我的JSON文件样本:

sed -r 's/([0-9]{16})/\1'"`date -d @ \1`"'/g'

2 个答案:

答案 0 :(得分:1)

这是你正在寻找的吗?

$ gawk -F'"' '/timestamp/{sub($(NF-1),"&,"strftime("%Y-%m-%d,%H:%M:%S,%a",int($(NF-1)/1000000)))} 1' file
{
  "example": [
    {
      "query": {
        "text": "string 1",
        "id": [
          {
            "timestamp": "1234567890123456,2009-02-13,17:31:30,Fri"
          }
        ]
      }
    },
    {
      "query": {
        "text": "string 2",
        "id": [
          {
            "timestamp": "1234567891123456,2009-02-13,17:31:31,Fri"
          }
        ]
      }
    },
    {
      "query": {
        "text": "string 3",
        "id": [
          {
            "timestamp": "1234567893123456,2009-02-13,17:31:33,Fri"
          }
        ]
      }
    }
  ]
}

如果没有,请将预期输出发布到您的示例输入中,这样我们就不会玩猜谜游戏。

答案 1 :(得分:0)

您可以使用日期命令,如下所示。

1.获取当前时间 - date +'%s,%Y-%m-%d,%H:%M:%S:,%a'

2.获取特定时间 - date -d @1234567890 +'%s,%Y-%m-%d,%H:%M:%S:,%a