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
手册中关于替换的部分以了解更多信息