如何使用sed用"\ /"替换路径字符串上的"/"?

qiu*_*ian 4 bash shell sed sh

我试过这个:

PATH="/user/dj/a/mydir"
PATH_FORMAT=`echo "${PATH}" | sed 's/\//\\\//'`
Run Code Online (Sandbox Code Playgroud)

但它只替换第一个"/".我希望得到的PATH_FORMAT值为:

"\/user\/dj\/a\/mydir"
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Tho*_*hor 6

g在替换命令中添加一个标志:

echo "${PATH}" | sed 's/\//\\//g'
Run Code Online (Sandbox Code Playgroud)

或者更具可读性,如Jonathan Wakely在评论中所述:

echo "${PATH}" | sed 's:/:\\/:g'
Run Code Online (Sandbox Code Playgroud)

要实现您在问题中描述的内容,您还需要一个反斜杠:

echo /user/dj/a/mydir | sed 's:/:\\\/:g'
Run Code Online (Sandbox Code Playgroud)

输出:

\/user\/dj\/a\/mydir
Run Code Online (Sandbox Code Playgroud)

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