在Linux中从JSON响应中提取ID
这是来自服务器的json响应。这个响应保存在一个名为TESTDEMO的变量中在Linux中从JSON响应中提取ID,linux,json,sed,grep,extract,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" }, "m
{
"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 "
}
}]
}
要提取文件夹“name”:“demo”
的id0F071CE4-790D11E3-AAC0-005056A5408D
。
需要帮助。像这样吗
awk -F"[/\"]" '/"name":"demo"/ {print $5}' RS="}" <<< "$variable"
0F071CE4-790D11E3-AAC0-005056A5408D
awk-F“[/\”]“/”name:“demo”/{print$5}”RS=“}”sed-n'/“type:“test folder”/,/”name:“demo”/{s/[[:blank:][]*”@href:“{HOST_URL}/;s/”,$//p}试试这个:
根据名称demo将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
希望这会有帮助。如果“在Linux中”意味着使用命令行工具而不是编程语言,jq
是JSON解析的有用工具。@ChrisB:OK。是否可以使用任何命令,如sed?JSON数据,我保存在变量中而不是文件中。语法不应用于变量。使用awk-F“[/\]”name:“demo”/{print$5}'RS=“}”@ruifeng以5秒的优势击败我:)更新示例
echo $TESTDEMO | sed 's/{/\n{/g' | grep '"name":"demo"' | cut -d',' -f2 | cut -d'/' -f 7 | cut -d'}' -f 1 | cut -d '"' -f 1