これは「mysqld」というソースファイルの一部です。
exit $r
;;
'bootstrap')
if test "$_use_whatever" == 1 ; then
log_failure_msg "Please use galera_new_cluster to start the mariadb service with --wsrep-new-cluster"
exit 1
fi
# Bootstrap the cluster, start the first node
# that initiate the cluster
echo $echo_n "Bootstrapping the cluster.. "
$0 start $other_args --wsrep-new-cluster
exit $?
;;
*)
# usage
basename=`basename "$0"`
「ブートストラップ」セクション(例:>> 'boostrap'... *)<<を除く)のすべての内容を「{NEW_BOOTSTRAP_CODE}」に変更したいと思います。だから私はそれが次のようになりたいです:
exit $r
;;
'bootstrap')
{NEW_BOOTSTRAP_CODE}
*)
# usage
basename=`basename "$0"`
さまざまなsedとperlの正規表現を試しましたが、一重引用符や括弧が付いているようです。これは私の最も失敗した試みです:
perl -i -0777 -pe 's/\'bootstrap\'\)/.+\*\)/{BOOTSTRAP_CODE}/g' /etc/init.d/mysqld
違いがある場合は、Raspberry Pi用です。
答え1
sed "/^[[:blank:]]*'bootstrap')/,/^[[:blank:]]*\*)/c \\
'bootstrap')\\
{NEW_BOOTSTRAP_CODE}\\
*)" script.sh
これは以下に適用されます。sed
変化command() を から までのc
行範囲に変換します。この行は次に置き換えられます。script.sh
/^[[:blank:]]*'bootstrap')/
/^[[:blank:]]*\*)
'bootstrap')
{NEW_BOOTSTRAP_CODE}
*)