【发布时间】:2018-04-20 10:53:10
【问题描述】:
我有一个如下所示的字符串:
hello/my/name/is/lebowski
我需要提取最后一个/(在本例中为lebowski)之后的字符串部分。我需要这样做的是 Bash。我如何实现这一目标?我可以使用正则表达式功能在 Java 或 Python 中做到这一点,但我不知道如何通过 Bash 命令来做到这一点。
任何帮助将不胜感激。谢谢!
【问题讨论】:
我有一个如下所示的字符串:
hello/my/name/is/lebowski
我需要提取最后一个/(在本例中为lebowski)之后的字符串部分。我需要这样做的是 Bash。我如何实现这一目标?我可以使用正则表达式功能在 Java 或 Python 中做到这一点,但我不知道如何通过 Bash 命令来做到这一点。
任何帮助将不胜感激。谢谢!
【问题讨论】:
通常,当您的文本看起来像目录路径时,basename 和 dirname 命令会派上用场。 basename 为您提供不带前导路径的文件名(在本例中为 lebowski),dirname 为您提供不带文件的目录名(在本例中为 hello/my/name/is/)。
无论哪种方式,它们都会产生一个子进程。你可以使用变量替换来得到你想要的,像这样:
var="hello/my/name/is/lebowski"
name=${var##*/}
我建议阅读bash 手册中有关替换的部分以获取更多信息。
【讨论】:
用简单的bash参数替换:
s="hello/my/name/is/lebowski"
echo ${s##*/}
lebowski
${var##Pattern} - 从 $var 中删除 $Pattern 中与 前端匹配的最长部分 的 $var
【讨论】:
就像在 ksh 中一样
st='hello/my/name/is/lebowski'
echo ${st##*/}
lebowski
【讨论】:
$ mystring='hello/my/name/is/lebowski'
$ echo ${mystring##*/}
lebowski
【讨论】: