bash正则表达式用一些后缀而不是一个特定的
我需要(不区分大小写)一个单词的几个变体的所有匹配 – 除了一个 – 包括未知数.
我想要 accept acceptance acceptable accepting ……但不是“接受”.当他指的是“例外”时,同事使用它.很多. 由于我无法预测变化(或错别字),我需要允许诸如“acceptjunk”和“acceptMacarena”之类的东西 我认为我可以通过消极的前瞻来实现这一目标,但这并没有给出我需要的结果 grep -iE '(?!acception)(accept[a-zA-Z]*)[[:space:]]' file 诀窍是我可以接受(har)包含“acception”的行,前提是其他单词匹配.例如,这条线可以匹配:
…否则到现在我已经通过grep -v管道grep并完成了它: grep -iE '(accept)[a-zA-Z]*[[:space:]]' | grep -vi 'acception' 我发现some questions that are similar和许多并不是这样.在grep -i中使用a-zA-Z可能是不必要的,但我正在fla.我可能错过了一些小的或基本的东西……但我仍然想念它.它是什么? 谢谢阅读. PS:我没有和grep结婚 – 但我在bash中操作 – 所以如果有一个神奇的awk命令可以做到这一点,我就是所有的耳朵(眼睛). PPS:忘了提及在https://regex101.com/上面的前瞻似乎工作,但它没有我的完整grep命令. 解决方法
要使用外观,您需要具有PCRE的GNU grep
grep -iP '(?!acception)(accept[a-z]*)[[:space:]]' 使用awk,这可能会起作用 awk '{ip=$0; sub(/acception/,""); if(/accept[a-zA-Z]*[[:space:]]/) print ip}' > ip = $0保存输入行> sub(/ acception /,“”)删除不需要的单词,可以添加其他不需要的单词> if(/ accept [a-zA-Z] * [[:space:]] /)print ip然后打印该行,如果它仍包含被搜索的单词 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |