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

标签 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' command

尝试 #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/(注意命令末尾的分隔符)。

没错,您可以将定界符更改为不同的字符,因此如果您要使用 ~,则需要将其中一个字符放在命令的末尾。

关于linux - 如何使用 ~ 作为分隔符使用 sed 查找和替换文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38540680/

相关文章:

linux - binutils 为 readelf 报错

bash - 如何计算 Bash 中所有人类可读的文件?

string - 用 sed 替换方括号之间的字符串

sed - 在字符对之间插入空格 - sed

bash - 如何使用 sed 从文件中获取 SOA 序列号?

linux - Bash 从匹配特定文本的行的输出中排除一行

linux - 如何将退出代码传递给 bash 中的函数?

linux - 在 sas 文件名管道中未解析宏的明显调用

linux - 如何让 sed 从标准输入中读取?

linux - 如何将 perf(Linux 工具)的输出保存到文件中?