String 在Bash中从end提取子字符串

String 在Bash中从end提取子字符串,string,bash,shell,ksh,String,Bash,Shell,Ksh,我有一个字符串如下所示: hello/my/name/is/lebowski 我需要提取最后一个/后面的字符串部分(本例中为lebowski)。我要做的就是巴什。我如何做到这一点?我可以使用正则表达式功能在Java或Python中实现这一点,但我不知道如何通过Bash命令实现这一点 任何帮助都将不胜感激。谢谢 使用简单的bash参数替换: $ mystring='hello/my/name/is/lebowski' $ echo ${mystring##*/} lebowski s="hell

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

hello/my/name/is/lebowski

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


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

使用简单的
bash
参数替换:

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

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

就像在ksh一样

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

    lebowski

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

无论哪种方式,它们都会生成一个子流程。您可以使用变量替换来获取所需内容,如下所示:

var="hello/my/name/is/lebowski"
name=${var##*/}
我建议阅读
bash
手册中关于替换的部分以了解更多信息