如何找到没有前导或尾随字符的精确字符串

如何找到没有前导或尾随字符的精确字符串

我想检查一行是否包含以下任何字符串 apple 或 pie ,条件如下所述,

aaaa bbbbb applezzzz           this should be treated as invalid

aaaaapple dddddd               invalid case

aaaa vvvvv apple       valid case
apple                  valid case (space just after apple)       
appleY                 if Y is present just after apple , it is also treated valid , Y could also be symbol like $ 

我试过 grep

grep 'apple\|appleY\|appple ' <<< $line
grep 'pie\|pieY\|pie ' <<< $line

但这满足无效的情况

答案1

如果您使用的是 GNU grep,您可以使用选项 grep 查找整个单词-w并指定多个模式:

grep -w -e apple -e appleY -e pie -e pieY

您还可以将它们组合在一个正则表达式中:

grep -w 'appleY\?\|pieY\?'

这里Y?的意思是“可选地后跟 Y”

您可以通过使用带有选项的扩展正则表达式来摆脱转义-E

grep -w -E 'appleY?|pieY?'

相关内容