2012-12-20 101 views
3

我已经试过这样:如何用“ /”使用sed替换路径字符串中的“/”?

PATH="/user/dj/a/mydir" 
PATH_FORMAT=`echo "${PATH}" | sed 's/\//\\\//'` 

但它只替换第一个 “/”。 我想要得到的PATH_FORMAT值为:

"\/user\/dj\/a\/mydir" 

我怎么能这样做?在评论

echo "${PATH}" | sed 's/\//\\//g' 

或者更具可读性,因为每乔纳森Wakely

+0

你似乎缺少一个反斜杠,在我的答案中看到最新的编辑。 – Thor

+1

为什么你需要有这个替代品?我从来没有见过这种东西的良好用途...... –

回答

6

添加g标志的替换命令

echo "${PATH}" | sed 's:/:\\/:g' 

要达到什么样的,你在你的问题描述,你需要一个更多的反斜杠:

echo /user/dj/a/mydir | sed 's:/:\\\/:g' 

输出:

\/user\/dj\/a\/mydir 
+3

另外,如果你选择不同的分隔符,你可以避免[倾斜牙签综合症](http://en.wikipedia.org/wiki/Leaning_toothpick_syndrome):'echo“$ { PATH}“| sed的:/:\\ /:g'' –

-1
sed "s%/%\\\\\\/%g" 

。 就这么简单