선행 또는 후행 문자 없이 정확한 문자열을 찾는 방법

선행 또는 후행 문자 없이 정확한 문자열을 찾는 방법

아래에 언급된 조건에 따라 줄에 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?'

관련 정보