sed를 사용하여 세 번째 패턴 발생을 대체합니다.

sed를 사용하여 세 번째 패턴 발생을 대체합니다.

이것은 sed명령입니다. 00to 의 세 번째 항목을 바꾸고 싶습니다 .11

echo "0000000000000000" | sed -e 's/00/11/3'

출력은 다음과 같습니다

0000110000000000

하지만 결과는 다음과 같습니다.

0011000000000000

첫 등장 00:

{00}00000000000000

두번째:

0{00}0000000000000

세 번째:

00{00}000000000000

무슨 일인지 설명해 줄 수 있는 사람이 있나요?

답변1

sed정규식 패턴이 일치하면 다음 검색이 즉시 시작됩니다 .뒤쪽에패턴이 일치했습니다... 원하는 것을 수행하려면 perl정규 표현식과 같은 것이 필요합니다.너비가 0인 Lookahead 및 LookBehind 어설션.

귀하의 경우 하위 패턴(2위 0)는 이후에 존재합니다.처음 0전반적인 패턴. 이것하위 모드너비가 0인 것으로 처리되므로 전체 패턴이 일치하면 검색이 즉시 다음으로 시작됩니다.처음패턴의 일부, 즉 첫 번째 0 이후 0.

관련 정보