问题
sed 替换语法 s/abc/xyz/g 能用其他字符代替 / 吗?
答案
可以!sed 可以使用几乎任何字符作为分隔符,在处理包含斜杠的路径时特别有用。
示例
常规替换
| 1 | sed 's/abc/xyz/g' | 
使用 # 作为分隔符
处理路径时更清晰:
| 1 | sed 's#/path/to/abc#/path/to/xyz#g' | 
使用 _ 作为分隔符
| 1 | sed 's_/path/to/abc_/path/to/xyz_g' | 
使用 | 作为分隔符
| 1 | sed 's|/path/to/abc|/path/to/xyz|g' | 
常用分隔符对比
| 分隔符 | 使用场景 | 示例 | 
|---|---|---|
| / | 默认,不包含路径 | s/abc/xyz/g | 
| # | 处理路径(推荐) | s#/path/abc#/path/xyz#g | 
| _ | 可读性好 | s_old_new_g | 
| | | 避免管道冲突 | s|old|new|g | 
| , | 简洁 | s,old,new,g | 
注意事项
- 选择的分隔符不能在模式或替换文本中出现
- 如果出现需要转义:s/a\/b/c\/d/g或改用其他分隔符s#a/b#c/d#g
- 使用合适的分隔符可以提高命令可读性