sed 패턴 뒤에 단일 문자가 한 번 이상옵니다.

sed 패턴 뒤에 단일 문자가 한 번 이상옵니다.

"uid=" 패턴을 단일 문자로 한 번 이상 바꾸고 싶습니다. 그래서 저는 다음 명령을 사용합니다.

sed s/uid=.+/uid=something/g file

그러나 이것은 작동하지 않습니다. "한 문자 뒤에 한 번 이상"이 올바르지 않은 것 같습니다..+

이유를 아시나요?

답변1

BSD sed또는 최신 버전의 GNU 및 busybox의 경우 sed다음을 사용할 수 있습니다.

sed -E 's/uid=.+/uid=something/'

단일 문자를 한 번 이상 일치시킵니다.

활성화된 -E플래그sed확장 정규식. 그것 없이는 얻을 것이다기본 정규식. 두 정규식 구문 세트는 기본적으로 동일하지만 약간 다른 구문을 사용하며 확장 세트는 더 많은 연산자를 지원합니다.

이것은 대체됩니다

uid=110

그리고

uid=something

어울리고 싶다면동일한BSD용이 아닌 문자 sed:

sed -E 's/uid=(.)\1*/uid=something/'

이것은 대체됩니다

uid=110

그리고

uid=something0

표준 ERE에는 역참조가 없습니다. GNU는 sed이를 확장으로 지원하지만 BSD는 지원하지 않습니다 sed. 그러나 역참조는 표준 BRE의 기능이므로 다음을 수행할 수 있습니다.

sed 's/uid=\(.\)\1*/uid=something/'

가지고 다닐 수 있는.

답변2

sed 's/uid=..*/uid=something/g' file

또는:

sed 's/uid=.\{1,\}/uid=something/g' file

posix sed의 경우

관련 정보