【问题标题】:Using sed to change slash direction in a URL [duplicate]使用 sed 更改 URL 中的斜线方向 [重复]
【发布时间】:2020-12-09 08:04:16
【问题描述】:

我已经看到了一些关于此的主题,但我尝试的任何方法似乎都没有奏效。我正在使用 mac 中的终端来执行此操作。

我希望将反斜杠更改为正斜杠,并希望通过使用 sed 命令来实现。

我的网址线程基本上是

ServerDrive\Folder1\Folder2\Folder3\Folder4\Folder5\Folder6\Folder7\Folder8\Folder9

我相信我可以使用 sed -e "s/\\\\/\//" 之类的东西

但是我不确定如何绑定整个命令,我需要从某种 echo 语句开始吗?就像我把它们粘在一起一样

ServerDrive\Folder1\Folder2\Folder3\Folder4\Folder5\Folder6\Folder7\Folder8\Folder9 sed -e "s/\\\\/\//"

终端产生一个错误,显示为 -bash: ServerDrive: command not found。

【问题讨论】:

    标签: bash macos sed terminal


    【解决方案1】:

    是的,你需要echo 和一个管道。否则,您在该行键入的第一件事将被视为要执行的命令——这只是基本的 shell 语法。

    您还需要g 修饰符,使其替换该行中的所有斜杠,而不仅仅是第一个。

    echo 'ServerDrive\Folder1\Folder2\Folder3\Folder4\Folder5\Folder6\Folder7\Folder8\Folder9' | sed -e 's#\\#/#g'
    

    或者您可以使用此处字符串(注意这是bash 扩展名)。

    sed -e 's#\\#/#g' <<< 'ServerDrive\Folder1\Folder2\Folder3\Folder4\Folder5\Folder6\Folder7\Folder8\Folder9'
    

    另外,对于单个字符的替换,您可以使用tr 而不是sed

    tr '\' '/' <<< 'ServerDrive\Folder1\Folder2\Folder3\Folder4\Folder5\Folder6\Folder7\Folder8\Folder9'
    

    如果 URL 在变量中,请使用 bash 的 parameter expansion 运算符进行子字符串替换。

    url='ServerDrive\Folder1\Folder2\Folder3\Folder4\Folder5\Folder6\Folder7\Folder8\Folder9'
    echo "${url//\\//}"
    

    【讨论】:

    • 非常感谢@Barmar - here-string 代码最终成为了我一直在寻找的代码,它很有效。出于好奇,如果我想了解更多关于这方面的信息,您认为这是什么语言?
    • 那是bash,完整的手册是here
    【解决方案2】:

    您可以使用tr 命令(tr manpage)将一组字符替换为另一个

    echo 'ServerDrive\Folder1\Folder2\Folder3\Folder4\Folder5\Folder6\Folder7\Folder8\Folder9' | tr '\\' '/'
    

    输出

    ➜  ~  echo 'ServerDrive\Folder1\Folder2\Folder3\Folder4\Folder5\Folder6\Folder7\Folder8\Folder9' | tr '\\' '/'
    ServerDrive/Folder1/Folder2/Folder3/Folder4/Folder5/Folder6/Folder7/Folder8/Folder9
    

    【讨论】:

      猜你喜欢
      • 2012-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 2012-10-21
      • 2020-12-22
      • 1970-01-01
      相关资源
      最近更新 更多