Я хотел бы изменить IP-адрес в этой строке с помощью некоторого пользовательского ввода:
rmi.sceduling.service.url=rmi\://192.168.0.19\:1199/ScedulingService
Код также должен работать, если адрес отсутствует:
rmi.sceduling.service.url=
It также должен быть портативным, по крайней мере, для Solaris.
Код, который я использую на данный момент:
value=`grep 'rmi' application.properties \
| awk -F":" '{print $2}' \
| awk -F"\'" '{print $1}'
| cut -d '/' -f 3-5 `
sed -e "s/$value/$host_ip/g" application.properties > file.tmp \
&& mv file.tmp application.properties
Вот наивное решение:
sed -i -e "s#rmi\\\\://[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+#$host_ip#"
Переносимое решение, которое должно работать как для Solaris, так и для Ubuntu.
ed -s application.properties << EOF
g/=rmi\\\\:\/\/[^\]*/s||=rmi\\\\://$host_ip|
w
EOF
. Почему вы все-таки вносите все правки (в этом и некоторых других ваших недавних вопросах) в этот файл application.properties? Мне кажется, что написать этот файл с нуля было бы намного проще.