bash - 获取字符串的一部分然后更新它

标签 bash

我有这个字符串

blah --arg1 --arg2 --etc doh

有时 doh 以斜线结尾,有时则不然。

我需要提取doh并分配给一个变量。

然后将其替换为/some/path/doh

我不会把我的尝试放在这里,它们太丑了。

--- 已更新 ---

嗯,抱歉,我不确定我是否理解答案。

最终的字符串应该是这样的:

blah --arg1 --arg2 --etc /some/path/doh

doh分配给一个var,比如foo

最佳答案

有点丑,但是可​​以用

首先摆脱最终的尾部斜线:

$ str='blah --arg1 --arg2 --etc doh///'
$ str=$(shopt -s extglob; echo "${str%%+(/)}")
$ echo $str
blah --arg1 --arg2 --etc doh

下一步提取doh

$ var=${str##* }
$ echo $var
doh

最后从字符串中删除它并添加回来前缀 /some/path

$ echo "${str%"$var"} /some/path/$var"
blah --arg1 --arg2 --etc  /some/path/doh

关于bash - 获取字符串的一部分然后更新它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12789714/

相关文章:

linux - Bash - 从字符串中提取日期并重新格式化

Bash grep 命令开始于或结束于

linux vm 登录使用 Shell 脚本

regex - 从文件名中获取紧接在文件扩展名之前的数字,以及文件名中的其他数字

linux - 使用 Awk 输入大文本文件并输出最常见的单词文本文件?

linux - Shell:如何为一个正在执行的命令设置工作目录而不影响一行中的其他命令

linux - Bash 如果失败返回上一个命令

linux - shell 脚本 grep 只处理文件的最后一行

linux - Linux shell 脚本中的运行时代码生成

python - 找出每个 clientId 的新旧映射之间的差异