从Linux中的JSON响应中提取ID

时间:2014-01-10 06:31:50

标签: linux json sed grep extract

这是来自服务器的我的json响应。这个响应我保存在一个名为TESTDEMO的变量中。

{
"objects":[
   {
   "meta":{
          "type":"test-folder",
          "@href":"{HOST_URL}/TsetRESTServices/objects/test-folder/0F071CE4-790D11E3-AAC0-005056A5408D",
           "name":"demo"
          },
   "meta":{
          "type":"test-folder",
          "@href":"{HOST_URL}/TsetRESTServices/objects/test-folder/0F072CE4-190A11E3-AAC0-00AA56A5408K",
           "name":"folder "
          } 
    }]
 }

想要提取文件夹0F071CE4-790D11E3-AAC0-005056A5408D的ID "name":"demo"。 需要帮助。

3 个答案:

答案 0 :(得分:1)

试试这个:

根据名称将您的JSON重定向到sed命令和grep:demo。

echo $TESTDEMO | sed 's/{/\n{/g' | grep '"name":"demo"' | cut -d',' -f2 | cut -d'/' -f 7 | cut -d'}' -f 1 | cut -d '"' -f 1

希望这会有所帮助。

答案 1 :(得分:0)

喜欢这个吗?

awk  -F"[/\"]" '/"name":"demo"/ {print $5}' RS="}" <<< "$variable"
0F071CE4-790D11E3-AAC0-005056A5408D

答案 2 :(得分:0)

sed -n '/"type":"test-folder"/,/"name":"demo"/ {s/[[:blank:]]*"@href":"{HOST_URL}//;s/",$//p}' <<< "$TESTDEMO"

type块移至name并打印行havin @href并在删除后删除