bash - 如何使用 SED 查找和替换目标字符串中的 "/"字符的 URL 字符串?

标签 bash sed escaping

<分区>

我正在尝试通过 OS X 终端使用 SED 来执行查找和替换。

假设我在整个文本文件中散布了这个字符串:http://www.find.com/page

我想用这个字符串替换它:http://www.replace.com/page

我遇到了麻烦,因为我不确定如何在我的字符串中正确转义或使用“/”字符。例如,如果我只是想找到“cat”并替换为“dog”,我发现以下命令非常有效:

sed -i '' 's/cat/dog/g' file.txt

有没有人对如何实现相同的功能有任何想法,而不是 cat 和 dog 有包含“/”字符的字符串或 URL?我尝试了许多不同的方法来转义“/”字符,但似乎 SED 无法再“找到”该字符串并且它不执行任何查找和替换操作。

非常感谢任何帮助或提示。

谢谢!

最佳答案

/ 不是sed 命令中的 分隔符,它只是可能的分隔符之一。对于此示例,您可以使用 , 代替,因为它不会与您的字符串冲突;

echo 'I think http://www.find.com/page is my favorite' | 
    sed 's,http://www.find.com/page,http://www.replace.com/page,g'

关于bash - 如何使用 SED 查找和替换目标字符串中的 "/"字符的 URL 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16778667/

相关文章:

linux - 找到直方图的最小值

ruby - 将转义的 XML 实体转换回 UTF-8

python - simplejson.loads() 获取无效\转义 : 'x'

javascript - Nodejs && JSON : select value by key

linux - 将批处理文件函数转换为 bash

linux - 打印重复条目的行号

java - 用双引号将 CSV 行引起来/创建自定义 main 方法

Bash:grep 为所有行返回 true

linux - 如何在Linux shell脚本中做这样的事情

linux - 如何使用sed或awk处理指定列的内容?