Como encontrar uma string exata sem caractere à esquerda ou à direita

0

Eu quero verificar se uma linha contém qualquer uma das seguintes strings apple ou pie com a condição explicada abaixo,

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 $ 

eu tentei o grep

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

mas isso satisfaz casos inválidos

    
por user143252 15.09.2017 / 21:40

1 resposta

2

Se você estiver usando o GNU grep , você pode buscar uma palavra inteira com a opção -w e especificar vários padrões:

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

Você também pode combiná-los em uma única expressão regular:

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

O Y? aqui significa "seguido opcionalmente por Y"

Você pode se livrar do escape usando expressões regulares estendidas com as opções -E :

grep -w -E 'appleY?|pieY?'
    
por 15.09.2017 / 21:49