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



晚安,

在我编写的Bash-shell脚本中,我试图找到以下文本:/usr/local/freeswitch/log/freeswitch.log,并将其替换为:/var/log/freeswitch.log文件中的/etc/fail2ban/jail.local

这就是我迄今为止所尝试的,这两种方法都会导致错误:sed:-e表达式#1,char 75:未终止的"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

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

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

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

最新更新