我正在尝试解析从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?表示)?
任何人都可以推荐一个Unix(选择你的风味)JSON解析器,可以用来内省管道中JSON响应的值吗?
我想将MongoDB的BSON转储转换为JSON.
要做到这一点,我正在使用Mongo提供的bsondump工具,但我得到的输出如下:
{ "_id" : ObjectId( "5316d194b34f6a0c8776e187" ), "begin_date" : Date( 1394004372038 ), "foo" : "bar" }
{ "_id" : ObjectId( "5316d198b34f6a0c8776e188" ), "begin_date" : Date( 1394004407696 ), "foo" : "bar" }
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何以人类可读的格式显示日期(例如hh:mm:ss dd/mm/yyyy)?
编辑
看起来更新版的mongodump输出日期为:
{ "_id" : ObjectId( "5316d194b34f6a0c8776e187" ), "begin_date" : {"$date":"2015-11-11T08:45:03.974Z"}}, "foo" : "bar" }
Run Code Online (Sandbox Code Playgroud)
所以这个问题不再适用了.感谢大家的帮助.
我想"id"从这一行JSON中提取密钥.
我相信这可以用grep完成,但我不确定是否正确.
如果有更好的方式没有依赖关系,我会感兴趣.
这是我的示例输出:
{"data": {"name": "test", "id": "4dCYd4W9i6gHQHvd", "domains": ["www.test.domain.com", "test.domain.com"], "serverid": "bbBdbbHF8PajW221", "ssl": null, "runtime": "php5.6", "sysuserid": "4gm4K3lUerbSPfxz", "datecreated": 1474597357}, "actionid": "WXVAAHQDCSILMYTV"}
Run Code Online (Sandbox Code Playgroud) 我有一个Json输出,我需要在linux中提取一些参数.
这是json输出:
{
"OwnerId":"121456789127",
"ReservationId":"r-48465168",
"Groups":[
],
"Instances":[
{
"Monitoring":{
"State":"disabled"
},
"PublicDnsName":null,
"RootDeviceType":"ebs",
"State":{
"Code":16,
"Name":"running"
},
"EbsOptimized":false,
"LaunchTime":"2014-03-19T09:16:56.000Z",
"PrivateIpAddress":"10.250.171.248",
"ProductCodes":[
{
"ProductCodeId":"aacglxeowvn5hy8sznltowyqe",
"ProductCodeType":"marketplace"
}
],
"VpcId":"vpc-86bab0e4",
"StateTransitionReason":null,
"InstanceId":"i-1234576",
"ImageId":"ami-b7f6c5de",
"PrivateDnsName":"ip-10-120-134-248.ec2.internal",
"KeyName":"Test_Virginia",
"SecurityGroups":[
{
"GroupName":"Test",
"GroupId":"sg-12345b"
}
],
"ClientToken":"VYeFw1395220615808",
"SubnetId":"subnet-12345314",
"InstanceType":"t1.micro",
"NetworkInterfaces":[
{
"Status":"in-use",
"SourceDestCheck":true,
"VpcId":"vpc-123456e4",
"Description":"Primary network interface",
"NetworkInterfaceId":"eni-3619f31d",
"PrivateIpAddresses":[
{
"Primary":true,
"PrivateIpAddress":"10.120.134.248"
}
],
"Attachment":{
"Status":"attached",
"DeviceIndex":0,
"DeleteOnTermination":true,
"AttachmentId":"eni-attach-9210dee8",
"AttachTime":"2014-03-19T09:16:56.000Z"
},
"Groups":[
{
"GroupName":"Test",
"GroupId":"sg-123456cb"
}
],
"SubnetId":"subnet-31236514",
"OwnerId":"109030037527",
"PrivateIpAddress":"10.120.134.248"
}
],
"SourceDestCheck":true,
"Placement":{
"Tenancy":"default",
"GroupName":null,
"AvailabilityZone":"us-east-1c" …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格式化不起作用.
此外,它只是我需要运行的一个命令,所以我不想使用任何外部库.
假设我们有这样的 JSON 文件:
{
...
"quotes":{
"SOMETHING":10,
...
"SOMETHING_ELSE":120.4,
...
} }
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得这些值并使用它们将它们加在一起?
我连这个都能做到吗?
#!/bin/bash
#code ...
echo "$SOMETHING + $SOMETHING_ELSE" | bc
#code ...
#exit
Run Code Online (Sandbox Code Playgroud)
我将使用 wget 命令获取 JSON 文件。我想要的只是该文件中的内容。
你能帮我吗?我是 shell 编程的初学者。