linux - 在shell脚本中最后一次出现单词之前获取子字符串

标签 linux shell unix

我在 Linux 中有一个字符串 /abc/xyz/def/xyz/1234/lmn/xyz/7890/uvw

我想使用 shell 脚本提取最后一次出现字符串 xyz 之前的子字符串。

例子:

输入:

/abc/xyz/def/xyz/1234/lmn/xyz/7890/uvw

输出:

/abc/xyz/def/xyz/1234/lmn

我在网上搜索了一些使用单个字符分隔符的解决方案,但我不知道如何使用像 xyz 这样的字符串分隔符。

最佳答案

这个怎么样:

$ x=/abc/xyz/def/xyz/1234/lmn/xyz/7890/uvw

$ echo ${x%xyz*}
/abc/xyz/def/xyz/1234/lmn/
$ echo ${x%/xyz*}
/abc/xyz/def/xyz/1234/lmn

如果你真的不想要最后一个xyz之前的/,那么第二个echo应该就是你要找的;如果保留尾随 / 是可以接受的,则第一个会这样做。

关于linux - 在shell脚本中最后一次出现单词之前获取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44634814/

相关文章:

linux - 权限被拒绝在 ubuntu 上以 g+w 模式写入目录

linux - 如何使用 grep 获取没有输出的行号?

c - 结构生日的 Makefile(Linux 模块)

python - 如何在 bash shell 脚本中解析和加载 JSON?

c - 需要一个shell脚本自动输入1-10000到程序中

linux - 通过sh运行ddl文件

c - 如何在 Mac 中使用 bash 终端使用 c 程序获取修改后的环境变量

c# - 是否可以使用 c# lang(dotnet 核心运行时)定义 shell 脚本?

bash - 在 Bash 脚本中按格式排序字符串数组

c - 使用分散聚集处理短读/写的技术?