先頭または末尾の文字なしで正確な文字列を見つける方法

先頭または末尾の文字なしで正確な文字列を見つける方法

以下の条件に従って、行に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?'

関連情報