-1

我正在尝试替换 Windows 路径中的反斜杠,以便可以将路径粘贴到 Filezilla 中以打开文件夹,而无需浏览目录结构。我使用以下命令:

echo '\path\to\the\05_directory' | sed -e 's/\\/\//g'

我的预期结果是

/path/to/the/05_directory

但相反我得到

/path   o       he_directory

它似乎\t并被\05解释为文字字符串以外的东西。

为什么会这样?我该如何解决这个问题?

4

1 回答 1

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"字段准备一个要在 shell 中使用的字符串。这当然意味着' '将被转义:

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
于 2020-09-04T22:09:05.727 回答