Linux bash解析json:Get first&;最后日期

Linux bash解析json:Get first&;最后日期,json,regex,linux,bash,Json,Regex,Linux,Bash,我有一个来自curl的JSON变量,如下所示(@stackoverflow=pretty printed),我想得到两条信息。第一个日历日期和最后一个日历日期(ISO 8601),但我不知道如何在bash中执行此操作。最重要的是,我必须计算这两个日期之间的持续时间(可能只是几毫秒或更多) 有人知道我该如何解决我的问题吗 { "results": [{ "...": "...", "date": "2012-09-15T14:04:00.741+0200",

我有一个来自curl的JSON变量,如下所示(@stackoverflow=pretty printed),我想得到两条信息。第一个日历日期和最后一个日历日期(ISO 8601),但我不知道如何在bash中执行此操作。最重要的是,我必须计算这两个日期之间的持续时间(可能只是几毫秒或更多)

有人知道我该如何解决我的问题吗

{
    "results": [{
        "...": "...",
        "date": "2012-09-15T14:04:00.741+0200",
        "...": "..."
    },
    {
        "...": "...",
        "date": "2015-09-15T14:04:00.741+0200",
        "...": "..."
    },
    {
        "...": "...",
        "date": "2015-09-11T14:04:00.741+0200",
        "...": "..."
    },
    {
        "...": "...",
        "date": "2015-09-15T14:04:00.741+0200",
        "...": "..."
    },
    {
        "...": "...",
        "date": "2015-09-15T14:04:30.741+0200",
        "...": "..."
    },
    {
        "...": "...",
        "date": "2019-09-15T14:04:00.741+0200",
        "...": "..."
    },
    {
        "...": "...",
        "date": "1015-09-15T14:04:00.741+0200",
        "...": "..."
    }]
}

供您参考:这是一个我必须使用的测试脚本,因为其中还有一些我不想用其他脚本语言重写的神奇之处。

不清楚具体的设置是什么,但如果您有变量名JSON中的文本,您可以使用以下命令提取包含所需日期的行:

echo "$JSON" | awk '/date/ && !a++; /date/ {l=$0} END {print l}'

(取决于删除的内容;您可能会得到一些错误的点击,并且需要一个约束更严格的正则表达式)。但是,使用shell工具解析json确实是一个坏主意。

不清楚具体的设置是什么,但是如果变量名json中有文本,可以使用以下命令提取包含所需日期的行:

echo "$JSON" | awk '/date/ && !a++; /date/ {l=$0} END {print l}'

(取决于删除的内容;您可能会得到一些错误的点击,并且需要一个约束更严格的正则表达式)。但是,使用shell工具解析json确实是一个坏主意。

不清楚具体的设置是什么,但是如果变量名json中有文本,可以使用以下命令提取包含所需日期的行:

echo "$JSON" | awk '/date/ && !a++; /date/ {l=$0} END {print l}'

(取决于删除的内容;您可能会得到一些错误的点击,并且需要一个约束更严格的正则表达式)。但是,使用shell工具解析json确实是一个坏主意。

不清楚具体的设置是什么,但是如果变量名json中有文本,可以使用以下命令提取包含所需日期的行:

echo "$JSON" | awk '/date/ && !a++; /date/ {l=$0} END {print l}'
(取决于删除的内容;您可能会得到一些错误的点击,并且需要一个约束更严格的正则表达式)。但是使用shell工具解析json确实是个坏主意。

用于解析json并提取所有日期,然后对它们进行排序并输出第一个和最后一个日期

curl ... | jq '.results[] | .date' | sort | awk 'NR==1; END {print}'
用于解析JSON并提取所有日期,然后对它们进行排序并输出第一个和最后一个日期

curl ... | jq '.results[] | .date' | sort | awk 'NR==1; END {print}'
用于解析JSON并提取所有日期,然后对它们进行排序并输出第一个和最后一个日期

curl ... | jq '.results[] | .date' | sort | awk 'NR==1; END {print}'
用于解析JSON并提取所有日期,然后对它们进行排序并输出第一个和最后一个日期

curl ... | jq '.results[] | .date' | sort | awk 'NR==1; END {print}'

以下是对我有效的方法:

   echo $JSON | tr '"' '\n' | sed -n '/date/{n;n;p}'
   dates=$(echo $JSON | tr '"' '\n' | sed -n '/date/{n;n;p}')
   for date in ${dates[@]}
      do
      echo $date
   done

以下是对我有效的方法:

   echo $JSON | tr '"' '\n' | sed -n '/date/{n;n;p}'
   dates=$(echo $JSON | tr '"' '\n' | sed -n '/date/{n;n;p}')
   for date in ${dates[@]}
      do
      echo $date
   done

以下是对我有效的方法:

   echo $JSON | tr '"' '\n' | sed -n '/date/{n;n;p}'
   dates=$(echo $JSON | tr '"' '\n' | sed -n '/date/{n;n;p}')
   for date in ${dates[@]}
      do
      echo $date
   done

以下是对我有效的方法:

   echo $JSON | tr '"' '\n' | sed -n '/date/{n;n;p}'
   dates=$(echo $JSON | tr '"' '\n' | sed -n '/date/{n;n;p}')
   for date in ${dates[@]}
      do
      echo $date
   done