string - 在 Bash 中从末尾提取子字符串

标签 string bash shell ksh

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

hello/my/name/is/lebowski

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

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

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

无论哪种方式,它们都会产生一个子进程。您可以使用变量替换来获得您想要的内容,如下所示:

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

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

关于string - 在 Bash 中从末尾提取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47168075/

相关文章:

ruby-on-rails - 无法在 rails resque worker 中运行 sudo

来自 Assets 的 Android 输入流文件 : FileNotFoundExeption

linux - 警告 : Could not start program with arguments. 警告:执行格式错误

bash - awk 两个文件的数字范围

LINUX Shell脚本将行转换为多列

shell - 跨平台 (Linux/OS X) 文件系统观察程序(文件更改时运行命令)

java - Java中的字符串isNullOrEmpty?

java - 计算一个字符串中有多少个回文

c++ - 为什么 b[2] 为假?

c++ - 在 Mac 上构建 opencv 2.4.6 - Mavericks