정규식의 컨텍스트와 일치

정규식의 컨텍스트와 일치

나는 egrep-o옵션을 사용하여 줄의 일치하는 부분을 가져옵니다.

cat /usr/share/dict/words | egrep -o '(aa|ii)'

이제 경기의 일부 맥락, 즉 왼쪽과 오른쪽의 일부 캐릭터를 보고 싶습니다. 이를 달성하는 한 가지 방법은 다음과 같습니다.

cat /usr/share/dict/words | egrep -o '.{3}(aa|ii).{2}'

더 나은(더 효율적이고, 더 우아한) 방법이 있나요? (명령줄 옵션을 살펴봤지만 egrep이 용도로 사용되는 옵션은 찾지 못했습니다.)

답변1

다음을 수행할 수 있습니다.

$ echo 'aabiicaa' | perl -lne '
   while (/aa|ii/g) {print substr($`,-3)."[$&]".substr($'\'',0,2)}'
[aa]bi
aab[ii]ca
iic[aa]

관련 정보