我是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)后,一切都会好的。
发布于 2015-09-16 21:41:03
在sed中,您的正则表达式变量很可能包含一个正斜杠,它被用作正则表达式分隔符。使用备用分隔符尝试此sed,例如~
sed -i '' "s~<pre>.*</pre>~<pre>($NEWNAME) $MD5</pre>~" ~/Desktop/replace.htmlhttps://stackoverflow.com/questions/32610261
复制相似问题