Regex 使用grep在匹配后获取下一个单词

Regex 使用grep在匹配后获取下一个单词,regex,linux,grep,Regex,Linux,Grep,我想使用grep从JSON文件中获取一个数字 例如,我想从以下公式中获得1.0872: {"base":"EUR","date":"2016-03-01","rates":{"USD":1.0872}} 使用 给出了整条线 {"base":"EUR","date":"2016-03-01","rates":{"USD":1.0872}} 我只想显示1.0872 我尝试使用正则表达式,但它不起作用(可能是我的错误,因为我以前从未这样做过): grep-oP'(?对于“正常”整数和浮点值,您可以

我想使用grep从JSON文件中获取一个数字 例如,我想从以下公式中获得1.0872

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

给出了整条线

{"base":"EUR","date":"2016-03-01","rates":{"USD":1.0872}}
我只想显示1.0872

我尝试使用正则表达式,但它不起作用(可能是我的错误,因为我以前从未这样做过):

grep-oP'(?对于“正常”整数和浮点值,您可以使用

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

grep -oP '(?<="USD":)-?\d*\.?\d+' file
grep-oP'(?对于“正常”整数和浮点值,您可以使用

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

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

grep-oP'(?首先\w+不会给你1.0872,因为“.”没有被归类到\w中。尝试将其更改为[\d\.]+。它不会解决整个问题,但应该会有帮助。检查,尝试
grep-oP'(?首先\w+不会给你1.0872,因为“.”没有被归类到\w中。尝试将其更改为[\d\.]+。它不会解决整个问题,但应该会有帮助。请检查,然后尝试
grep-oP'(?)?
grep -oP '(?<="USD":)-?\d*\.?\d+' file