我正在尝试替换Windows路径中的反斜杠,以便我可以在Filezilla中粘贴路径以打开文件夹而无需在目录结构中浏览。我使用以下命令:
echo '\path\to\the\05_directory' | sed -e 's/\\/\//g'
我的预期结果是
/path/to/the/05_directory
但我得到了
/path o he_directory
似乎\t
和\05
被解释为文字字符串以外的其他内容。
为什么会这样?我该如何解决这个问题?
答案 0 :(得分:1)
相对于将它们解释为制表符,您可以使用printf "%q"
打印文字\
:
printf "%q" '\path\to\the\05_directory'
\\path\\to\\the\\05_directory
然后您可以使用sed
来获取输出:
printf "%q" '\path\to\the\05_directory' | sed -e 's|\\\\|/|g'
/path/to/the/05_directory
"%q"
字段准备在外壳程序中使用的字符串。当然,这意味着' '
将被转义:
printf "%q" '\path\to\the\05 directory'
\\path\\to\\the\\05\ directory
您可以单独清理:
printf "%q" '\path\to\the\05 directory' | sed -e 's|\\\\|/|g; s|\\||g'
/path/to/the/05 directory
答案 1 :(得分:0)
很明显,您的字符串是作为带有转义序列的字符串文字读取的。
确保将反斜杠加倍:
echo '\\path\\to\\the\\05_directory' | sed -e 's/\\\\/\\//g'