Linux bash解析json:Get first&;最后日期
我有一个来自curl的JSON变量,如下所示(@stackoverflow=pretty printed),我想得到两条信息。第一个日历日期和最后一个日历日期(ISO 8601),但我不知道如何在bash中执行此操作。最重要的是,我必须计算这两个日期之间的持续时间(可能只是几毫秒或更多) 有人知道我该如何解决我的问题吗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",
{
"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