특정 줄이 실행될 때마다 해당 숫자를 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 표현식을 인용하지 않은 채로 둘 수 있습니다. 왜냐하면 쉘이 (잘못) 해석할 다른 내용이 없기 때문입니다.