2016-07-21 4 views
0

다음 문자열이 libVersion = '1.23.45.6'이고 1.23.45.61.23.45.7으로 바꿔야합니다.Bash - 다른 문자열로 정규 표현식 바꾸기

분명히 버전은 비슷한 형식의 숫자 일 수 있습니다 (숫자가 4 개일 필요는 없습니다).

나는 BRE (기본 정규 표현식)을 사용하는 다음 사용하려하지만 인수없이 기본이 나오지

echo "libVersion = '1.23.45.6'" |sed "s/([0-9\.]+)/1.23.45.7/g"

+1

'echo "libVersion = '1.23.45.6'"sed "s/[0-9.] \ +/1.23.45.7/g" –

+1

또는'echo "libVersion = '1.23.45.6' '"| sed "s/'[^'] * '/'1.23.45.7 '/ g"' –

+0

빙고 !!! 올바른 답으로 표시 할 수 있도록 답안에 넣으십시오. – Wins

답변

1

, 즉 나오지도 작동하지 않습니다. BRE에서는 마찬가지로 캡처 그룹, 이전 토큰을 한 번 이상 반복 정규식 +의 힘을 가지고, +을 탈출해야 \(regex\)

echo "libVersion = '1.23.45.6'" | sed "s/[0-9.]\+/1.23.45.7/" 

당신은 모든 대체 할 부정 문자 클래스를 사용할 수있다 문자는 작은 따옴표 안에 존재합니다.

echo "libVersion = '1.23.45.6'" | sed "s/'[^']*'/'1.23.45.7'/" 

교체가 한 번만 수행되어야하므로 g 글로벌 수정자가 필요하지 않습니다.

+1

@ wiktor 농담하세요 : P –

관련 문제