比赛后的Grep数字

时间:2014-10-08 03:17:10

标签: grep

我想在比赛结束后用一组圆括号内的数字。

如下foo.txt

foo: "32.1" bar: "42.0" misc: "52.3"

我想在条形码42.0之后提取数字。

以下行会匹配,但我想提取数字。我想我可以将输出管道输回grep寻找\d+.\d+,但是有更好的方法吗?

grep -o -P 'bar: "\d+.\d+"' foo.txt

2 个答案:

答案 0 :(得分:3)

一种方法是使用前瞻和后瞻断言:

grep -o -P '(?<=bar: ")\d+.\d+(?=")'

另一个是使用sed:

sed -e 's/.*bar: "\([[:digit:]]\+.[[:digit:]]\+\)".*/\1/'

答案 1 :(得分:1)

你也可以使用下面的grep,

$ echo 'foo: "32.1" bar: "42.0" misc: "52.3"' | grep -oP 'bar:\s+"\K[^"]*(?=")'
42.0