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

时间:2016-03-01 22:55:30

标签: regex linux grep

我想使用grep从JSON文件中获取一个数字 例如,我希望从获得 1.0872

{"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

1 个答案:

答案 0 :(得分:0)

对于“普通”整数和浮点值,您可以使用

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

如果您的号码没有整数部分且可以.开头,请使用

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

可选-

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

请参阅IDEONE demo