我有一个看起来像这样的字符串:
hello/my/name/is/lebowski
我需要在最后/
之后提取字符串的一部分(在这种情况下为lebowski
)。我需要做的就是Bash。我该如何实现这一目标?我可以使用正则表达式功能在Java或Python中执行此操作,但我不知道如何通过Bash命令进行相同的操作。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
使用简单的 bash
参数替换:
s="hello/my/name/is/lebowski"
echo ${s##*/}
lebowski
$ {var ## Pattern} - 从 $ var 中移除 $ Pattern 中与前端匹配的最长部分 $ var
的
答案 1 :(得分:2)
通常,当您的文本看起来像目录路径时,basename
和dirname
命令可以派上用场。 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