0

我从“command1”获得以下值我需要在单个命令中将此 UTC StartDATE 和 EndDate 更新为 ETS。我该怎么做。

$>command1
{
    "Jobs": [
        {
            "StartDATE": 1601283799.807,
            "State": "COMPLETED",
            "JobId": "abc123",
            "EndDate": 1601272679.289,

        },
                {
                "StartDATE": 1600211301.064,
                "State": "COMPLETED",
                "JobId": "abc1234",
                "EndDate": 1600211282.846
        },
}

我知道我可以使用“date -d @”转换 UCT。但是我如何在同一行更新和打印。我需要像下面这样的输出。

$>command1|command....
{
    "Jobs": [
        {
            "StartDATE": Mon Sep 28 05:03:19 EDT 2020,
            "State": "COMPLETED",
            "JobId": "abc123",
            "EndDate": Mon Sep 28 05:57:59 EDT 2020,

        },
                {
                "StartDATE": Tue Sep 15 19:08:21 EDT 2020,
                "State": "COMPLETED",
                "JobId": "abc1234",
                "EndDate": Tue Sep 15 19:19:02 EDT 2020
        },
}
4

1 回答 1

0

如果您不介意perl用于此目的:您可以使用localtime将捕获的纪元时间转换为人类可读的。注意e在搜索和替换块的末尾。

perl -pe 'BEGIN{$ENV{TZ} = "America/New_York"}; s/([\d.]+)/localtime $1/e if /StartDATE|EndDate/'
{
    "Jobs": [
        {
            "StartDATE": Mon Sep 28 05:03:19 2020,
            "State": "COMPLETED",
            "JobId": "abc123",
            "EndDate": Mon Sep 28 01:57:59 2020,

        },
                {
                "StartDATE": Tue Sep 15 19:08:21 2020,
                "State": "COMPLETED",
                "JobId": "abc1234",
                "EndDate": Tue Sep 15 19:08:02 2020
        },
}
于 2020-09-28T22:17:54.657 回答