【问题标题】:Use sed to replace all backslashes with forward slashes(doubles too) [duplicate]使用 sed 将所有反斜杠替换为正斜杠(双倍)[重复]
【发布时间】:2014-09-02 15:09:50
【问题描述】:

我希望能够使用 sed 接受输入,例如:

\\servername\folder\folder\folder

//servername/folder/folder/folder

在这里看到了这个问题,但答案“echo 'C:\foo\bar.xml' | sed 's/\///g'”提供了这个字符串:“/servername/folder/folder/folder”(一个缺少正斜杠)。

【问题讨论】:

    标签: regex bash sed


    【解决方案1】:

    sed 似乎有点矫枉过正,因为您只想音译一个字符。您可以使用专为此特定任务设计的 tr:

    echo '\\servername\folder\folder\folder' | tr '\\' '/'
    

    @Kent 注意到,sed 有音译命令 y:

    echo '\\servername\folder\folder\folder' | sed 'y#\\#/#'
    

    【讨论】:

    • +1 为tr,不过sed 对这个任务也不是没用,除了s cmd 可以,对于单字符,sed 有y cmd,更适合完成这项任务。
    • @Kent:你是对的。我总是忘记 sed 还有其他命令。
    • 这个不行,输出是/servername/folder/folder/folder,也就是少了一个斜线。就像我在问题中提到的那样。
    • @Osher:奇怪我得到了好结果。您可能在某处使用双引号代替单引号。
    • 你是对的!! :))) 直到现在我一直使用双引号作为回显字符串。谢谢!!
    【解决方案2】:

    你可以使用:

    s='\\servername\folder\folder\folder'
    sed 's~\\~/~g' <<< "$s"
    //servername/folder/folder/folder
    

    【讨论】:

      猜你喜欢
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-27
      • 1970-01-01
      相关资源
      最近更新 更多