Sed - “s”的未知选项

Sed - “s”的未知选项

sed在脚本中执行命令:

sed -i "${1}s/${2}=.*/${2}=${REPLY}/" $3

这是回声:

sed -i 13s/log4j.appender.ROOT2.File=.*/log4j.appender.ROOT2.File=/app/TET/log.log/ /applis/DIAPASON/diapason1/conf/log4j.properties

我的错误:

sed: -e expression n°1, character 61: unknown option for是的

答案1

变量中有多个/字符$REPLY,这很令人困惑sed

s///您可以在大多数版本的 中为命令选择替代分隔符sed,所以如果这是我,我会尝试如下操作:

sed -i "${1}s|${2}=.*|${2}=${REPLY}|" $3

这将/for sed 替换为|,以便/in ${REPLY}(希望)不被 解释sed

答案2

使用任何字符作为命令分隔符,请参阅以下示例

sed -Ei "s|$k|$j|g" filename.txt

相关内容