【发布时间】:2018-02-26 12:17:09
【问题描述】:
我需要(不区分大小写)一个单词的多个变体的所有匹配项——除了一个——包括未知数。
我想要
accept
acceptance
acceptable
accepting
...但不是“接受”。一位同事在他的意思是“例外”时使用它。很多。
由于我无法预测变化(或错别字),我需要允许诸如“acceptjunk”和“acceptMacarena”之类的内容
我认为我可以通过负前瞻来完成此任务,但这并没有给出我需要的结果
grep -iE '(?!acception)(accept[a-zA-Z]*)[[:space:]]' file
诀窍是,如果其他词匹配,我可以接受(har)包含“接受”的行。例如这条线没问题可以匹配:
对必然的接受就是接受。
...否则到现在我已经通过 grep -v 管道 grep 并完成了它:
grep -iE '(accept)[a-zA-Z]*[[:space:]]' | grep -vi 'acception'
我找到了some questions that are similar 和许多并非如此。在grep -i 中使用a-zA-Z 可能是不必要的,但我正在挣扎。我可能错过了一些小的或基本的东西......但我仍然错过了它。这是什么?
感谢阅读。
PS:我没有嫁给 grep——但我在 bash 中操作——所以如果有一个神奇的 awk 命令可以做到这一点,我会全神贯注。
PPS:忘了提到在https://regex101.com/ 上,上面的前瞻似乎有效,但它不适用于我的完整 grep 命令。
【问题讨论】:
-
missing something small or basicgrep 不支持环视...除非您有 GNU grep 支持 -P... -
没错。我是电影中的那个人,在英雄活着之前就死了。谢谢 Sundeep。