Lookbehind在bash中使用ggrep -P

时间:2014-01-15 16:33:34

标签: regex bash grep gnu lookbehind

我正在编写一个bash脚本,我想在ggrep中使用后面的代码来查找字符串中的特定值。

在构建概念验证示例时,我可以在使用grep时返回结果,但是它给了我整行而不是我指定的lookbehind之前的那些:

$echo "this and that 12 those" | ggrep -P '(?<=this\sand\sthat)[\s\d]+'

this and that 12 those 

我原本希望得到" 12 ",但却获得了整条线。

我在这里缺少什么?

如果有帮助的话,我正在使用以下版本的ggrep使用自制软件:

$ ggrep --version
ggrep (GNU grep) 2.14.56-1e3d

1 个答案:

答案 0 :(得分:1)

您必须添加-o选项。

-o, --only-matching
              Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.

这一行变为:

echo "this and that 12 those" | ggrep -o -P '(?<=this\sand\sthat)[\s\d]+'