sed 증분 연산

sed 증분 연산

특정 줄이 실행될 때마다 해당 숫자를 1씩 증가시켜 문자열 끝의 숫자를 변경하고 싶습니다 sed.

문자열은 다음과 같습니다.

server-port=25555

나는 그것을 하기 위해 이 라인과 같은 sed것을 실행할 수 있다고 생각했지만 작동하지 않습니다.

sed -i 's/port=[0-9]{5}/int(&+1)/'

답변1

perl이 작업을 수행 하지 않는 것이 좋습니다 sed.

perl -i -pe 's/(port=)(\d+)$/$1.($2+1)/e' filename

답변2

echo "server-port=25555" | sed  -E 's/(.*-port=)([0-9]+)/echo "\1$((\2+1))"/e' 

답변3

여러 줄을 사용해도 괜찮다면 sed 및 Shell 수학을 사용하여 이 문제를 해결할 수 있습니다.

# or however else you're getting the server-port section
num=$(echo server-port=25555 | sed 's/server-port=//') 
v=$((v+1))
sed -i "s/server-port=25555/server-port=$v/" your-file-here

sed 표현식 주위에 큰따옴표가 있다는 점에 유의하세요. 이렇게 하면 sed가 보기 전에 $v를 해석할 수 있습니다. 이 특별한 경우에는 sed 표현식을 인용하지 않은 채로 둘 수 있습니다. 왜냐하면 쉘이 (잘못) 해석할 다른 내용이 없기 때문입니다.

관련 정보