我是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)
后,就可以了。
答案 0 :(得分:15)
您的$NEWNAME
变量很可能在其中包含正斜杠,该变量在sed
中用作正则表达式分隔符。使用备用分隔符尝试此sed
,例如~
:
sed -i '' "s~<pre>.*</pre>~<pre>($NEWNAME) $MD5</pre>~" ~/Desktop/replace.html