使用SED命令检索JSON对象键值
我有一个类似下面的JSON来自curl命令,它存在于output.txt文件中。我想检索JIRA的状态,这里是“正在进行” 我只能使用sed。我试着像下面一样,它不工作。我不确定如何导航到名称值。你能建议打印JIRA状态吗使用SED命令检索JSON对象键值,json,ubuntu,sed,Json,Ubuntu,Sed,我有一个类似下面的JSON来自curl命令,它存在于output.txt文件中。我想检索JIRA的状态,这里是“正在进行” 我只能使用sed。我试着像下面一样,它不工作。我不确定如何导航到名称值。你能建议打印JIRA状态吗 sed -n 's|.*"fields":{"status":{"name":"\([^"]*\)".*|\1|p' output.txt 你可以用 sed-n的/^[:space:
sed -n 's|.*"fields":{"status":{"name":"\([^"]*\)".*|\1|p' output.txt
你可以用
sed-n的/^[:space:][]*“name”:“\(.*)”,/\1/p'output.txt
#使用GNU时:
sed-n的/^\s*“name”:\s*“\(.*\)”,/\1/p'output.txt
见
详情:
-抑制默认行输出n
-匹配^\s*“名称”:\s*“\(.*)”,
-字符串的开头^
-零个或多个空格\s*
-文字字符串“名称”:
-零个或多个空格\s*
-a“
字符”
-一个POSIX BRE捕获组,匹配到\(.*)
-最后出现的,
(它们仍然位于目标行的末尾),
-将整个匹配项替换为组1值\1
-仅打印更换结果p
sed
,您还可以使用-z
选项将文件作为单个字符串读取,然后使用更具体的模式:
sed-z的/*“字段”:\s*{\s*“状态”:{.*\s*名称:“\([^”]*\)”*/\1/'output.txt
看
很遗憾,docker映像无法与jq一起使用。我现在无法更改docker,它只能与sedHow about
sed-nE'/“name”:/s/*“(.+)”*/\1/p'
或awk-F'/“name”:/{print$4}一起使用“
假设搜索“name”时只有一行匹配:
尝试sed-n的/^[:space:][]*“name”:“\(.*\)”,/\1/p”文件
,请参见。是否确实需要检查字段:{“status”
是否存在?@WiktorStribiżew-不是真的
sed -n 's|.*"fields":{"status":{"name":"\([^"]*\)".*|\1|p' output.txt