我想从这一行JSON中提取"id"
密钥。
我相信这可以用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"
}
5条答案
按热度按时间r7knjye21#
如果您有一个可以执行Perl兼容正则表达式(PCRE)的grep:
-P
启用PCRE-o
只保留匹配项"id": *
匹配"id"
和任意数量的空格\K
丢弃其左侧的所有内容(“可变大小正向后查看”)"[^"]*"
匹配两个引号以及它们之间的所有非引号如果grep不能做到这一点,则可以使用
这里使用了两次grep。第一个命令的结果是
"id": "4dCYd4W9i6gHQHvd"
;第二个命令删除所有内容,只保留一对引号和它们之间的非引号,它们锚定在字符串的末尾($
)。但是,正如所指出的,您不应该使用grep,而应该使用一个可以解析JSON的工具-例如jq:
这只是
data
对象中id
键的一个简单过滤器。要去掉双引号,可以使用-r
(“raw output”)选项:jq还可以整洁地打印JSON:
fcipmucu2#
只需将您的数据传输到
jq
,然后按键选择即可Tutorial Here的名字
mf98qq943#
我发现最好的方法是使用python,因为它本身就能处理JSON,而且现在大多数系统都预装了python,不像jq:
nbewdwxp4#
不,不,不,不,不,不
在此测试和工作:https://ideone.com/EG7fv7
来源:https://brianchildress.co/parse-json-using-grep
slwdgvem5#
1个月1次
第4年第4周第9年第6年