grep在逗号后立即以'ing'结尾的单词

时间:2013-05-09 22:48:35

标签: regex text grep comma

我正在尝试使用逗号后面的字符以'ing'结尾的行来grep文件:

... we gave the dog a bone, showing great generosity ...
... this man, having no home ...

但不是:

... this is a great place, we are having a good time ...

我想找到一个实例,其中'ing'一词是逗号后的第一个单词。看起来这应该是非常可行的grep,但我还没弄清楚如何,或找到一个类似的例子。

我试过了

grep -e ", .*ing"

匹配逗号后的多个单词。像

这样的命令
grep -i -e ", [a-z]{1,}ing"
grep -i -e ", [a-z][a-z]+ing"

不要做我期望的事情 - 他们不像我前两个例子那样匹配短语。任何对此的帮助(或指向更好的工具的指针)都将非常感激。

2 个答案:

答案 0 :(得分:6)

尝试,\s*\S+ing

匹配您的前两个短语,与您的第三个短语不匹配。

\s表示'任何空格',*表示0或更多,\S表示'任何非空格'(将字母大写为常规用于反转正则表达式中的字符集 - 适用于\b \s \w \d),+表示“一个或多个”,然后我们匹配ing

答案 1 :(得分:3)

您可以使用\b令牌匹配字边界(请参阅this page)。

以下内容应该有效:

grep -e ".*, \b\w*ing\b"

编辑:除了现在我意识到\b是不必要的,而.*,\s*\w*ing将起作用,正如Patashu指出的那样。我的正则表达式生锈了。