파일에 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'