【问题标题】:Extract a substring from end in Bash [duplicate]从Bash的末尾提取子字符串[重复]
【发布时间】:2018-04-20 10:53:10
【问题描述】:

我有一个如下所示的字符串:

hello/my/name/is/lebowski

我需要提取最后一个/(在本例中为lebowski)之后的字符串部分。我需要这样做的是 Bash。我如何实现这一目标?我可以使用正则表达式功能在 Java 或 Python 中做到这一点,但我不知道如何通过 Bash 命令来做到这一点。

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: string bash shell ksh


    【解决方案1】:

    通常,当您的文本看起来像目录路径时,basenamedirname 命令会派上用场。 basename 为您提供不带前导路径的文件名(在本例中为 lebowski),dirname 为您提供不带文件的目录名(在本例中为 hello/my/name/is/)。

    无论哪种方式,它们都会产生一个子进程。你可以使用变量替换来得到你想要的,像这样:

    var="hello/my/name/is/lebowski"
    name=${var##*/}
    

    我建议阅读bash 手册中有关替换的部分以获取更多信息。

    【讨论】:

      【解决方案2】:

      用简单的bash参数替换:

      s="hello/my/name/is/lebowski"
      echo ${s##*/}
      lebowski
      

      ${var##Pattern} - 从 $var 中删除 $Pattern 中与 前端匹配的最长部分$var

      【讨论】:

        【解决方案3】:

        就像在 ksh 中一样

            st='hello/my/name/is/lebowski'
            echo ${st##*/}
        
            lebowski
        

        【讨论】:

          【解决方案4】:
          $ mystring='hello/my/name/is/lebowski'
          $ echo ${mystring##*/}
          lebowski
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-06-22
            • 1970-01-01
            • 2014-09-18
            • 1970-01-01
            • 1970-01-01
            • 2019-04-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多