如果我们使用sed命令时,如果出现特殊字符,可能会报错,示例如下:
# /不可以作为界定符,因为会与里面的内容冲突 sed -i 's/flink//etc/g' # 井号#不可以作为界定符,因为会与里面的内容冲突 sed -i 's#jdbc://127.0.0.1&password=1#aa$username=root#g' # @不可以作为界定符,因为会与里面的内容冲突 sed -i 's@jdbc://127.0.0.1&password=1@aa$username=root@g'
那该如何解决呢?
我们得看来里面的内容来选择特定的界定符,例如:
- 里面含有"/",可以选择“#”或“ @”作为界定符;
- 里面含有“#”,可以选择“@”或“/”作为界定符;
- 里面含有“@”,可以选择“/”或“#”作为界定符。
那么如果都有以上的内容呢?只能在被替换文本中使用转义符号 “\”了,如:
sed -i 's/oracle/\/etc\/oracle/g'