我正在尝试解析从curl请求返回的JSON,如下所示:
curl 'http://twitter.com/users/username.json' |
sed -e 's/[{}]/''/g' |
awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}'
Run Code Online (Sandbox Code Playgroud)
以上将JSON拆分为字段,例如:
% ...
"geo_enabled":false
"friends_count":245
"profile_text_color":"000000"
"status":"in_reply_to_screen_name":null
"source":"web"
"truncated":false
"text":"My status"
"favorited":false
% ...
Run Code Online (Sandbox Code Playgroud)
如何打印特定字段(用-v k=text?表示)?
是否有JSON 的XSLT等价物?允许我对XSON进行转换的事情,比如XSLT对XML做的转换.
在shell中我有一个要求,其中我必须阅读JSON响应,其格式如下:
{ "Messages": [ { "Body": "172.16.1.42|/home/480/1234/5-12-2013/1234.toSort", "ReceiptHandle": "uUk89DYFzt1VAHtMW2iz0VSiDcGHY+H6WtTgcTSgBiFbpFUg5lythf+wQdWluzCoBziie8BiS2GFQVoRjQQfOx3R5jUASxDz7SmoCI5bNPJkWqU8ola+OYBIYNuCP1fYweKl1BOFUF+o2g7xLSIEkrdvLDAhYvHzfPb4QNgOSuN1JGG1GcZehvW3Q/9jq3vjYVIFz3Ho7blCUuWYhGFrpsBn5HWoRYE5VF5Bxc/zO6dPT0n4wRAd3hUEqF3WWeTMlWyTJp1KoMyX7Z8IXH4hKURGjdBQ0PwlSDF2cBYkBUA=", "MD5OfBody": "53e90dc3fa8afa3452c671080569642e", "MessageId": "e93e9238-f9f8-4bf4-bf5b-9a0cae8a0ebc" } ] }
Run Code Online (Sandbox Code Playgroud)
在这里,我只关注"Body"属性值.我做了一些不成功的尝试,如:
jsawk -a 'return this.Body'
Run Code Online (Sandbox Code Playgroud)
要么
awk -v k="Body" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}
Run Code Online (Sandbox Code Playgroud)
但这还不够.谁能帮我这个?
可能重复:
Unix命令行JSON解析器?
如果我有一个JSON配置文件和一个PHP脚本将配置文件压缩成这样的东西
database_dbname=sensei
database_password=somerandompassword
memcached_host=localhost
....
Run Code Online (Sandbox Code Playgroud)
我可以将它传递给我的bash脚本并将上面的每个条目作为变量吗?
./bin/flatten_config.php config.json | ./bin/my_bash_script.sh
Run Code Online (Sandbox Code Playgroud)
所以在我的bash脚本中我可以使用配置文件中的值
mysql -D${database_dbname} -p${database_password} ...
Run Code Online (Sandbox Code Playgroud) 当我运行命令时,我得到这样的响应
{
"status": "available",
"managed": true,
"name":vdisk7,
"support":{
"status": "supported"
},
"storage_pool": "pfm9253_pfm9254_new",
"id": "ff10abad"-2bf-4ef3-9038-9ae7f18ea77c",
"size":100
},
Run Code Online (Sandbox Code Playgroud)
和数百种这种类型的列表或词典我想要一个做这种事情的命令
if name = "something",
get the id
Run Code Online (Sandbox Code Playgroud)
任何可以帮助我学习这类命令的链接都将受到高度赞赏
我试过了
awk'{if($ 2 =="something")打印$ 0;}'
但我认为响应是在Json中,因此colum明智的awk格式化不起作用.
此外,它只是我需要运行的一个命令,所以我不想使用任何外部库.