我想在比赛结束后用一组圆括号内的数字。
如下foo.txt
,
foo: "32.1" bar: "42.0" misc: "52.3"
我想在条形码42.0
之后提取数字。
以下行会匹配,但我想提取数字。我想我可以将输出管道输回grep寻找\d+.\d+
,但是有更好的方法吗?
grep -o -P 'bar: "\d+.\d+"' foo.txt
答案 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