path=/tmp/a1
file=/tmp/a1/a.txt
file_without_path=`echo $file | sed s/'\/tmp\/a1'/''/g`
echo $file_without_path
在上面的代码中,我有一个问题
如果变量“path”是动态可验证的,允许用户自定义
例如,用户将“path”定义为/ usr / local /然后我传递此值进行搜索并替换
但是,如果我在没有任何干预的情况下传递此值
该计划可将其视为echo $file | sed s//usr/local/''/g
我尝试使用tr -s '/' '\/'
但不成功
我想问你怎么解决这种情况
感谢。
答案 0 :(得分:1)
sed
“s”命令的分隔符不必是/
; sed将用作“s”之后的任何分隔符:
sed s%'/tmp/a1'%''%g ## no need to worry about escaping slashes any more