이것은 "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}
*)