IP 주소의 세 번째 부분을 대체하기 위해 다음 sed one 라이너를 작성했습니다.확장 정규 표현식과 캡쳐 그룹을 사용하여 Sed
sed 's/192\.168\.[0-9]*\.\([0-9]*\)/192.168.15.\1/g'
192.168.0.1
192.168.15.1
나는 정규 표현식을 확장 ??
를 사용하여 게으른이 192.168.15
와 192.168.0
을 대체 할 수 있도록 만들고 싶어하지만 난 '-r'옵션을 제공 할 때 다음과 같은 오류가 발생합니다.
$ sed -r 's/192\.168\.[0-9]*\.\([0-9]*\)/192.168.15.\1/g'
sed: -e expression #1, char 44: invalid reference \1 on `s' command's RHS
캡처 그룹을 사용하면서 게으른 표현식을 만드는 방법에 대해 설명 할 수 있습니까?
참고 : 많은 다른 접근법을 사용하여 예제를 얻을 수 있습니다. 제 질문은 예제를 해결하는 방법이 아닙니다. 내가 extened regexp 및 캡처 그룹 sed 사용에 흥미 롭습니다.
N.B. 'sed -r 's/192 \ .168 (\. [0-9] *) {2} /192.168.15 \ 1/g ''는 같은 결과를 얻습니다. 역 참조'\ 1'는 두 개의'(\. [0-9] *) {2}'를 사용하고 regexp의 중복을 피합니다. – potong
더 깨끗하고,'sed -r 's/192 \ .168 (\. [0-9] *) {2} /192.168.15 \ 1/g ''을 다루기 때문에 게으른 표현을 만들 때도 도움이됩니다. 3 부분의 경우에 후행의'.'가 붙습니다. –