Вот часть моего исходного файла, названная" 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, если это имеет значение.
sed "/^[[:blank:]]*'bootstrap')/,/^[[:blank:]]*\*)/c \\
'bootstrap')\\
{NEW_BOOTSTRAP_CODE}\\
*)" script.sh
Это применяет команду sed
change ( c
) к диапазону строк в script.sh
из / ^ [[ : blank:]] * 'bootstrap') /
до / ^ [[: blank:]] * \ *)
. Он заменяет эти строки на
'bootstrap')
{NEW_BOOTSTRAP_CODE}
*)