我在目录中有很多数据,我想找到任何不是数字的双字实例。我从here开始:
\b(\w+) \1\b
并将其扩展为包含我在结果中不需要的内容:
(?!(?:one|two|three|four|five|six|seven|eight|nine|oh|zero))\b(\w+) \1\b
当我将它作为python表达式放入regex101时(因为这是我所熟悉的),这是有效的,但是当我在grep命令中使用它时却没有。我意识到我不能使用!,所以我在阅读this question之后尝试了这个:
grep -Proh "\b(\w+) \1\b" | grep -Prohv "?(?:one|two|three|four|five|six|seven|eight|nine|oh|zero)"
返回“grep:无需重复”。我不确定我是否正在使用正确的grep参数,或者我正在使用的正则表达式有什么问题。
要匹配的示例数据:
今天要评估可能性。怀疑那是否正在发生
要忽略的示例数据:
比重一点零零七
答案 0 :(得分:2)
只需-P
或-oP
即可。
$ grep -P '(?!(?:one|two|three|four|five|six|seven|eight|nine|oh|zero))\b(\w+) \1\b' file
today to evaluate for possibilities. doubt that that is occurring
$ grep -oP '(?!(?:one|two|three|four|five|six|seven|eight|nine|oh|zero))\b(\w+) \1\b' file
that that