UNIX:如何在使用搜索时翻译“/”并用sed替换命令

时间:2013-07-20 14:19:37

标签: unix sed

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 '/' '\/'但不成功

我想问你怎么解决这种情况

感谢。

1 个答案:

答案 0 :(得分:1)

sed“s”命令的分隔符不必是/; sed将用作“s”之后的任何分隔符:

sed s%'/tmp/a1'%''%g  ## no need to worry about escaping slashes any more