ソースファイルに同じチェックを含む複数のif節があります。 if文の後に定義されたテキストに基づいて条件文をコメントアウトすることにより、条件付きブロックの1つを常に実行したい。シェルスクリプトまたはpythonまたはperlを使用してソースファイル内のコードブロックを置き換える方法
if [ "${SVR_GRP}" = "obi" ] ; then
EXTRA_JAVA_PROPERTIES="-Doracle.fusion.appsMode=true ${EXTRA_JAVA_PROPERTIES}"
export EXTRA_JAVA_PROPERTIES
fi
if [ "${SVR_GRP}" = "obi" ] ; then
EXTRA_JAVA_PROPERTIES="-DUseSunHttpHandler=true ${EXTRA_JAVA_PROPERTIES}"
export EXTRA_JAVA_PROPERTIES
fi
if [ "${SVR_GRP}" = "obi" ] ; then
EXTRA_JAVA_PROPERTIES="Doracle.fusion.appsMode=true ${EXTRA_JAVA_PROPERTIES}"
export EXTRA_JAVA_PROPERTIES
fi
#if [ "${SVR_GRP}" = "obi" ] ; then
EXTRA_JAVA_PROPERTIES="-DUseSunHttpHandler=true ${EXTRA_JAVA_PROPERTIES}"
export EXTRA_JAVA_PROPERTIES
#fi
と交換しますが、私はこの使用してperlの/ Pythonやシェルスクリプトを行うことができますどのように私を提案してくださいことはできますか?
私は期待通りに動作しますが、周りの仕事としてそれを検討し、より良い解決策があることができ感じる
perl -0pe '/if [ "${SVR_GRP}" = "obi" ] ; then\nEXTRA_JAVA_PROPERTIES="-DUseSunHttpHandler=true ${EXTRA_JAVA_PROPERTIES}"/#if [ "${SVR_GRP}" = "obi" ] ; then\nEXTRA_JAVA_PROPERTIES="-DUseSunHttpHandler=true ${EXTRA_JAVA_PROPERTIES}"
Pythonプログラム、私のために動作しませんperlのコマンドを試してみました。私はシェルスクリプトとperlでうまくいきません。
file_loc = 'D:/official/workspace/pythontest/test/oops/test.sh'
new_file_loc = 'D:/official/workspace/pythontest/test/oops/test1.sh'
def modify():
file = open(file_loc)
file2 = open(new_file_loc, 'w')
lines = []
count = -1;
found = False
for line in file:
if str(line).strip() == 'if [ "${SVR_GRP}" = "obi" ] ; then':
count = 3;
lines.append(line)
else:
if str(line).strip() == 'EXTRA_JAVA_PROPERTIES="-DUseSunHttpHandler=true ${EXTRA_JAVA_PROPERTIES}"':
found = True
lines.append(line)
count = count - 1;
if (count == 0):
writeIntoFile(file2, lines, found)
found = False
count = -1
lines = []
elif count < 0:
lines = []
file2.write(line)
def writeIntoFile(file, lines, found):
for line in lines:
if found == False:
file.write(line)
elif str(line).strip() == 'if [ "${SVR_GRP}" = "obi" ] ; then' or str(line).strip() == 'fi':
file.write('#' + line);
else:
file.write(line)
modify()
何を試しましたか? –
私はsedとperlコマンドperl -0pe '/ if ["$ {SVR_GRP}" = "obi"]を使って試しました。 \ nEXTRA_JAVA_PROPERTIES = " - DUseSunHttpHandler = true $ {EXTRA_JAVA_PROPERTIES}" /# "[$ {SVR_GRP}" = "obi"]の場合は、 \ nEXTRA_JAVA_PROPERTIES = " - DUseSunHttpHandler = true $ {EXTRA_JAVA_PROPERTIES}"しかし動作しませんでした –
私はpythonでファイル全体を読み込み、新しいファイルに内容を書き込んで、次に見つかったテキストに基づいて内容を置き換えることができるオプションがあります。しかし、そこにもっと良い解決策があると感じる。 –