sed 명령 삭제 # [중복]

sed 명령 삭제 # [중복]

아래에서 sed 명령을 사용하고 있는데 if가 build 및 delete MacAddressPasswordeRegisteryValue입니다 . 이를 피할 수 있는 방법이 있습니까?WElcome12#WElcome12#

sed -i "s#^mac.address.sftp.user.password=.*#mac.address.sftp.user.password=${MacAddressPasswordeRegisteryValue#*=}#" $APP_CONFIG_FILE

답변1

비밀번호에 문자가 포함될 수 있다고 가정하면 표현식에 사용된 구분 기호는 sed사용하기에 안전하지 않습니다. 예를 들어, s/.../.../비밀번호에 가 포함 되어 있으면 /동일한 문제가 다시 발생합니다.

그러므로 sed여기서는 사용하지 마세요. 대신에,

awk -v pw="$MacAddressPasswordeRegisteryValue" \
    'BEGIN { OFS=FS="=" }
    $1 == "mac.address.sftp.user.password" { print $1, pw; next } 1' \
    "$APP_CONFIG_FILE" >"$APP_CONFIG_FILE"-new

이것은 바뀔 것이다

mac.address.sftp.user.password=something old

입력하다

mac.address.sftp.user.password=hello world !#$/

그것이 $MacAddressPasswordeRegisteryValue문자열이라면요 hello world !#$/. 다른 줄은 수정 없이 새 파일로 전달됩니다 "$APP_CONFIG_FILE"-new.

관련 정보