我想检查一行是否包含以下任何字符串 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?'