2016-03-01 100 views
1

後得到下一個字,我想用grep從JSON文件 例如得到一個數字,我想從這個1.0872用grep匹配

{"base":"EUR","date":"2016-03-01","rates":{"USD":1.0872}} 

使用

grep "USD" rates 

給出了整條生產線

{"base":"EUR","date":"2016-03-01","rates":{"USD":1.0872}} 

我只是想顯示器1.0872

我試圖用一個正則表達式,但它不工作(可能是一個錯誤在我的部分,因爲我從來沒有這樣做之前):

grep -oP '(?<="USD"\:)\w+' file 
+0

一開始\ w +不會給你的1.0872因爲 '' \ w中沒有分類。嘗試將其更改爲[\ d \。] +。它不會解決整個問題,但它應該有所幫助。 –

+0

檢查[此演示](http://ideone.com/Mk5Ctx),請嘗試'grep -oP'(?<=「USD」:)[\ d。] +'文件'。或者'grep -oP'(?<=「USD」:)\ d * \。?\ d +'文件'。 –

回答

0

對於「正常」的整數和浮點值,你可以使用

grep -oP '(?<="USD":)\d+(?:\.\d+)?' file 

如果你的號碼可以沒有整數部分,並且可以與.啓動,使用

grep -oP '(?<="USD":)\d*\.?\d+' file 

可選-

grep -oP '(?<="USD":)-?\d*\.?\d+' file 

IDEONE demo