我正在尝试使用逗号后面的字符以'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"
不要做我期望的事情 - 他们不像我前两个例子那样匹配短语。任何对此的帮助(或指向更好的工具的指针)都将非常感激。
答案 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指出的那样。我的正则表达式生锈了。