"a"가 나타날 것으로 예상했는데 왜 "a:b"인가요?
$ echo "a:b:c" | sed -E 's/(.+?):.+/\1/'
a:b
답변1
대부분의 버전은 sed
Perl 스타일 정규 표현식을 지원하지 않습니다. (내가 아는 한 지원하는 유일한 버전은 "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