我需要一个 grep 正则表达式,我想在一个文本文件上运行。grep 命令应输出文本文件的每一行,其中包含一个单词(令该单词为foo),后跟一个空格和另一个以某个后缀结尾的单词(令该后缀为ing)。
因此正则表达式应该匹配以下序列:foo going, foo walking,foo running
请注意,ing应该位于 后面的下一个单词中foo。所以正则表达式不应该匹配:foo asfd asdfing。
我试过
grep -i "foo .*ing"
Run Code Online (Sandbox Code Playgroud)
但这不仅匹配紧邻的下一个单词,还匹配 ifing位于 后第二个单词中的情况foo。
假设您的单词不区分大小写,您可以利用不敏感标志(?i)
您可以使用这样的正则表达式:
(?i)foo [a-z]*ing
Run Code Online (Sandbox Code Playgroud)
foo顺便说一句,如果和下一个单词之间可以存在多个空格,您可以使用:
(?i)foo\s+[a-z]*ing
Run Code Online (Sandbox Code Playgroud)
如果你认为这ing不是一个词,那么你可以将上面的改进为:
(?i)foo\s+[a-z]+ing
Run Code Online (Sandbox Code Playgroud)

如果你想grep支持 Perl 正则表达式,你可以使用:
grep -P '(?i)foo\s+[a-z]+ing'
Run Code Online (Sandbox Code Playgroud)