sed를 사용하지 않고 지연 평가 받기

sed를 사용하지 않고 지연 평가 받기

"a"가 나타날 것으로 예상했는데 왜 "a:b"인가요?

$ echo "a:b:c" | sed -E 's/(.+?):.+/\1/'
a:b

답변1

대부분의 버전은 sedPerl 스타일 정규 표현식을 지원하지 않습니다. (내가 아는 한 지원하는 유일한 버전은 "super sed"입니다.SSD, 2005년 이후 업데이트되지 않음), ?non-greedy 수정자를 지원하지 않습니다.

정확한 정규식을 사용하려면 가장 간단한 해결책은 다음을 사용하는 것입니다 perl.

$ echo "a:b:c" | perl -pe 's/(.+?):.+/$1/'
a

그렇지 않으면 일치하는 모든 문자를 캡처하도록 정규식을 수정합니다.와는 별개로콜론:

$ echo "a:b:c" | sed -E 's/([^:]+):.+/\1/'
a

관련 정보