Sed错误:替换命令中的错误标志:' U'

时间:2015-09-16 13:38:58

标签: regex bash sed

我是bash脚本的新手,并尝试使用sed替换我文件中的某些单词。以下是我在剧本中使用的bash:

sed -i '' "s/<pre>.*<\/pre>/<pre>($NEWNAME) $MD5<\/pre>/"~/Desktop/replace.html

我收到错误消息:bad flag in substitute command: 'U'。我使用双引号,因为我需要将变量放入。

我的环境是Mac。

======================================

1.转出我忘了在替换字符串和文件名之间留一个空格。这导致结果始终显示:bad flag in substitute command: '~'。它现在有效。

2.原因是我使用MD5=$(md5 path)来创建MD5值,该值获得MD5 (path) *****的删除,并且路径包含/,它打破了正则表达式。更改MD5=$(md5 -q path)后,就可以了。

1 个答案:

答案 0 :(得分:15)

您的$NEWNAME变量很可能在其中包含正斜杠,该变量在sed中用作正则表达式分隔符。使用备用分隔符尝试此sed,例如~

sed -i '' "s~<pre>.*</pre>~<pre>($NEWNAME) $MD5</pre>~" ~/Desktop/replace.html