【发布时间】:2021-08-22 10:47:17
【问题描述】:
我有一个来自 curl 命令的 JSON,如下所示,它存在于 output.txt 文件中。我想检索 JIRA 状态,这里是“进行中”
{
"self": "https://jira.com/jira/rest/api/2/issue/1",
"fields": {
"status": {
"self": "https://jira.com/jira/rest/api/2/status/10170",
"description": "",
"name": "In Progress",
"id": "10170"
}
}
}
我有一个只能使用 sed 的限制。我试过如下它不起作用。我不确定如何导航到名称值。你能建议打印JIRA状态吗
sed -n 's|.*"fields":{"status":{"name":"\([^"]*\)".*|\1|p' output.txt
【问题讨论】:
-
jq 似乎更适合处理 JSON (stedolan.github.io/jq)
-
不幸的是,docker 图像不适用于 jq。我现在无法更改 docker,它仅适用于 sed
-
sed -nE '/"name":/ s/.*"(.+)".*/\1/p'或awk -F'"' '/"name":/{print $4}'假设在搜索"name":时只有一行会匹配 -
试试
sed -n 's/^[[:space:]]*"name": "\(.*\)",/\1/p' file,见ideone.com/VuKvrY。你真的需要检查fields":{"status"的存在吗? -
@WiktorStribiżew - 不是真的