sed를 사용하여 ${FOO} 문자열을 ${'$'}{BAR}로 바꾸세요.

sed를 사용하여 ${FOO} 문자열을 ${'$'}{BAR}로 바꾸세요.

파일에 N번 나타나는 다음 문자열이 있습니다. ${FOO} 이를 다음 문자열로 바꿔야 합니다.${'$'}{BAR}

내 현재 상태는 다음과 같습니다.

sed "s/\\${FOO}/\\${'\\$'}{BAR}/" file.txt그러나 이로 인해 “잘못된 대체”가 발생했습니다.

sed(버전 4.8)을 사용하여 이를 올바르게 달성하려면 어떻게 해야 합니까 ?

답변1

달러 기호 앞에 백슬래시를 넣으면 충분합니다.

$ echo '${FOO} xxx ${FOO} xxx ${FOO}' | sed "s/\${FOO}/\${'\$'}{BAR}/g"
${'$'}{BAR} xxx ${'$'}{BAR} xxx ${'$'}{BAR}

작은따옴표를 사용하는 것도 가능합니다. 달러 기호를 단순화하지만 작은따옴표를 좀 더 복잡하게 만듭니다.

echo '${FOO} xxx ${FOO} xxx ${FOO}' | sed 's/${FOO}/${'\''$'\''}{BAR}/g'

관련 정보