2014-01-10 41 views
0

這是我從服務器發出的json響應。我將這個響應保存在一個名爲TESTDEMO的變量中。從Linux中的JSON響應中提取ID

{ 
"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 " 
      } 
    }] 
} 

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

+0

如果「在Linux中」意味着使用命令行工具而不是編程語言,「jq」是JSON解析的一個有用工具。 –

+0

@ChrisB:好的。是否可以使用像sed這樣的命令? –

回答

1

後試試這個:

重定向你的JSON根據sed命令和grep到名稱:演示。

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

希望這會有所幫助。

0

是否這樣?

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

json數據我保存在一個變量不在文件中。語法不適用於變量。 –

+0

使用'awk -F「[/ \」]「'/」name「:」demo「/ {print $ 5}'RS =」}「<<<」$ TESTDEMO「' – ray

+1

@ruifeng擊敗我5秒: )更新的例子 – Jotne

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

拿塊typename和打印線就吃@href和」完成後,刪除這些