【发布时间】:2021-12-20 10:40:48
【问题描述】:
我的问题是我有这个命令:
sed -i -E 's/((^|\s)PATH=)([^\$]*)$/\1${PATH:-\3}/g' /foo
就我使用单引号而言,它工作正常,但现在我需要使用双引号(因为 Dockerfile 不喜欢单引号),当我尝试将其翻译为:
"s/((^|\s)PATH=)([^\$]*)$/\1${PATH:-\3}/g"
我收到此错误:unknown option to `s'。所以我读到我可以尝试替换分隔符并尝试使用@:
"s@((^|\s)PATH=)([^\$]*)$@\1${PATH:-\3}@g"
但是我得到:unterminated `s' command。我也尝试用;替换:
"s;((^|\s)PATH=)([^\$]*)$;\1${PATH:-\3};g"
并且“成功”了,但最终结果与我的预期不同。关于如何正确翻译以将其与双引号一起使用的任何想法?
【问题讨论】:
-
转义所有美元符号和反斜杠。
标签: sed dockerfile