如何使用〜作为分隔符使用sed查找和替换文本

时间:2016-07-23 10:21:48

标签: linux bash sed

不可天,

在我正在整理的Bash shell脚本中,我试图找到这个文本: /usr/local/freeswitch/log/freeswitch.log 并将其替换为: /此文件中的var / log / freeswitch / freeswitch.log /etc/fail2ban/jail.local

这是我到目前为止所尝试的,两者都会导致错误: sed:-e expression#1,char 75:unterminated`s s命令

尝试#1

sed -i 's~usr/local/freeswitch/log/freeswitch.log~var/log/freeswitch/freeswitch.log' /etc/fail2ban/jail.local

尝试#2

sed -i 's~usr/local/freeswitch/log/freeswitch.log/var/log/freeswitch/freeswitch.log' /etc/fail2ban/jail.local

我的研究表明,由于我正在搜索的文本包含“/”字符,我应该使用不同的分隔符“〜”来分隔查找和替换字符串。但看起来我做错了什么,感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:3)

sed替换命令的结构是s/PATTERN/REPLACEMENT/(注意命令末尾的分隔符)。

你是对的,你可以将分隔符更改为不同的字符,所以如果你要使用~,你需要将其中一个分隔符放在命令的末尾。