2014-12-27 123 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