10台すべてのサーバーで文字列を変更したい約10台のサーバーのリストがあります。
ファイルを見てループを使用するスクリプトを作成しました。このスクリプトを使用perl -i -pe
して、行/opt/nimsoft/bin/niminit "" "start"
を次のように変更する必要があります#/opt/nimsoft/bin/niminit "" "start"
(コメントアウトするには#を追加してください)
oldstring = /opt/nimsoft/bin/niminit "" "start"
newstring = #/opt/nimsoft/bin/niminit "" "start"
/をエスケープするのに問題があります。\、\ Q、\ Eを試しました。何か案は?
for i in `cat $file`
do
echo "Disable application on startup"
oldstring=start /opt/nimsoft/bin/niminit "" "start"
newstring=#start /opt/nimsoft/bin/niminit "" "start"
ssh -t $i sudo perl -p -i -e 's/oldstring/newstring/g' /etc/rc.tcpip
# /etc/rc.tcpip:start /opt/nimsoft/bin/niminit "" "start"
echo "==============================================="
done
のs{}{}
代わりに使用する場合はs///
、スラッシュをエスケープすることを心配する必要はありません。
以下は、まだコメントされていない場合に一致させたい文字列の前にコメントを追加します。
perl -i -pe 's{(?<!#)(?=start /opt/nimsoft/bin/niminit "" "start")}{#}' /etc/rc.tcpip
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加