2016-03-01 112 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