使用 sed 用反斜杠替换每个空格

Yur*_*rij 1 command-line sed text-processing windows-subsystem-for-linux

只想在 Windows 文件路径中转义空格。我正在尝试这个:

echo "111  1111 "| sed -e "s/[[:space:]]/\\ /g"
Run Code Online (Sandbox Code Playgroud)

只匹配空格但不替换。

pLu*_*umo 5

如果您使用双引号,则bash解释\\并输出\,然后再次将sed其与以下空格一起解释为仅空格。

所以你还需要一个反斜杠:

echo "111  1111 " | sed -e "s/[[:space:]]/\\\ /g"
Run Code Online (Sandbox Code Playgroud)

但最好使用单引号来防止 bash 解释:

echo "111  1111 " | sed -e 's/[[:space:]]/\\ /g'
Run Code Online (Sandbox Code Playgroud)

输出:

111\ \ 1111\ 
Run Code Online (Sandbox Code Playgroud)

替代方法:

如果您将文件路径作为变量,则可以使用 Shell 方法:

path="111  1111 "
echo ${path// /\\ }
Run Code Online (Sandbox Code Playgroud)