2014-12-27 92 views
4

请介绍一下如何使用grep命令提取从以下JSON一些指定的文本 -grep命令找到钥匙从JSON值

{"result":"Customer information saved successfully with Customer id :59 and version :1","status":{"responseCode":200,"result":null,"responseMessage":"Success","responseType":"info"}} 

一些google搜索后,它看起来像它可以通过用grep用正则表达式。但它不起作用。请你指出这个错误

cat response.txt | grep -Po '(?<="Customer id ":)[0-9]+' 

假设:response.txt包含上面的json。

如果是,请解释。

回答

5

你错过K

cat response.txt | grep -Po 'Customer id :\K[0-9]+' 
59 

截图,其工作: enter image description here

+2

grep可以自己读取文件,所以'grep ... file'(无用的猫)。 '\ K'是OP已经使用的简写,积极的后视 – 2014-12-27 18:22:46

+0

它仍然不起作用。你可以请检阅它 – user1483747 2014-12-27 18:24:13

+0

它正在工作....我错过了一些文本...你可以请详细解释它..或者你可以给我一个链接,我可以找到有关它的详细文档。 – user1483747 2014-12-27 18:33:04

0

试着这样做:

$ jq -r '.result' json_file | grep -oP '(?<=Customer id :)\d+' 
59 

检查http://stedolan.github.io/jq/manual/

+0

我知道jq的工具,但我们的服务器没有jq工具已安装。我没有别的选择,只能使用grep命令。可能吗 ? – user1483747 2014-12-27 18:20:24

+0

jq可以作为用户下载并直接执行,无需任何依赖关系 – 2014-12-27 18:20:54