在Bash

时间:2017-11-07 21:54:18

标签: string bash shell ksh

我有一个看起来像这样的字符串:

hello/my/name/is/lebowski

我需要在最后/之后提取字符串的一部分(在这种情况下为lebowski)。我需要做的就是Bash。我该如何实现这一目标?我可以使用正则表达式功能在Java或Python中执行此操作,但我不知道如何通过Bash命令进行相同的操作。

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

4 个答案:

答案 0 :(得分:2)

使用简单的 bash 参数替换:

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

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

答案 1 :(得分:2)

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

无论哪种方式,这些都会产生子进程。你可以使用变量替换来获得你想要的东西,如:

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

就像在ksh中一样

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

    lebowski