2

特定のファイルの適切な値で特定のエントリを更新するにはどうすればよいですか?

hello.confというファイル名を持っているとしましょう。

/agent/process="starthelloJava",start="/opt/starthello.sh",start_dir="/opt/hello",start_args=""
/agent/process="stophelloJava",stop="/opt/stophello.sh",stop_dir=/opt/hello",stop_args="",stop_timeout="30"

で更新starthelloJavaする

start_args="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/"

出力

/agent/process="starthelloJava",start="/opt/starthello.sh",start_dir="/opt/hello",start_args="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/"

start_argsプロセスを空にするstarthelloJava

/agent/process="starthelloJava",start="/opt/starthello.sh",start_dir="/opt/hello",start_args=""
/agent/process="stophelloJava",stop="/opt/stophello.sh",stop_dir=/opt/hello",stop_args="",stop_timeout="30"

私がやっているのは長いステップです。入力に基づいてファイル全体を書き直しています。

これは効率的ではない私のアプローチです

cp hello.conf hello.conf_bak
remove entry first
cat /opt/CSCObac/agent/conf/agent.conf_bak | grep -v /opt/starthello.sh  > hello.conf
echo "/agent/process=\"starthelloJava\",start=\"/opt/starthello.sh\",start_dir=\"/opt/hello\",start_args=\"-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/\" >> hello.conf
4

1 に答える 1

1
set -- '-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/'
sed -i -r "s!(.*starthelloJava.*=).*!\1\"$1\"!" hello.conf

または値を空にします

set -- ''
sed -i -r "s!(.*starthelloJava.*=).*!\1\"$1\"!" hello.conf
于 2013-02-05T17:20:58.273 に答える