【发布时间】:2015-08-02 11:06:11
【问题描述】:
我是 UNIX 脚本的新手,我正在尝试使用 sed 命令替换文本,但我不断收到此错误:
sed: -e expression #1, char 51: `s' 的未知选项
这是我拥有的代码的 sn-p:
sed -e "/^#PBS -o ${rundir}/posttest/s#_CMODEL#${cmodel}#" \
-e "/^#PBS -e ${rundir}/posttest/s#_CMODEL#${cmodel}#" \
${rundir}/run_post.shell >${rundir}/run_post.${cmodel}.sh
请让我知道我做错了什么。非常感谢!!!
【问题讨论】:
-
${rundir}中有/字符吗? -
如果您希望
/^#PBS -o ${rundir}/posttest/是一个正则表达式模式,指示s命令将应用于哪些行,那么您需要转义内部/。否则,对您正在尝试做的事情进行一些解释会有所帮助。 -
@Barmar 是的 ${rundir} 确实有 / 它确实改变了任何东西
-
您需要转义正则表达式中的所有斜杠,
posttest之前的显式斜杠和变量中的斜杠。 -
@alvits:很好。但是
-[eo]比-\(o\|e\)在视觉上要容易得多,而\|是一个 Gnu sed 扩展,可能并非在所有 sed 中都可用。