2013-02-22 4 views
0

문구가 objID="x" 인 sed 스크립트가 있습니다. 여기서 x는 양의 정수일 수 있습니다.sed로 잡은 변수를 증가시키는 방법은 무엇입니까?

전체 파일에서 100을 상수 값으로 증가시키고 싶습니다. 어떻게해야합니까?

sed 's/objID="\(\d\)"/objID="\1"/g 

어떻게 변경해야합니까?

+0

GNU)가 필요하지만, AWK는 펄보다 쉽게 ​​할 것입니다. sed는 반드시해야하나요? – Kent

+0

@Kent'sed'는 필수가 아닙니다. 그것은 내가 가장 잘 알고있는 도구 일뿐입니다. (예를 들어'awk'와 같은 것) – Patryk

답변

2

이 일을보십시오 :

으로 :

$ echo 'objID="1"' | 
    perl -pe 's/(objID=")(\d+)(")/sprintf "%s%s%s", $1, $2+1, $3/ge' 
objID="2" 

으로 :

$ echo 'objID="1"' | awk -F'"' '/objID=/{print $1 $2+1 $3}' 
objID="2" 
+1

펄 예제가 작동하지만 괜찮 으면서도 awk는 더 많은''''이있는 라인에서는 작동하지 않습니다. – Patryk

1

나오지 만약 내가하지만, AWK, 펄 쉽게 일을 할 것, 주석으로는이다 요구 사항은 다음과 같습니다.

(은 GNU Sed의은 그것을 할 수 나오지

kent$ echo 'objID="7"'|sed -r 's/(objID=")([0-9]+)(")/echo \1$((100+\2))\3/ge' 
objID=107 
관련 문제