给定字符串"foo-bar-1.4.5"或"for-bar-baz-1.8.3"如何将这些字符串分成两部分:第一部分分别是最后一个" - "("foo-bar","foo-bar-baz")和最后一部分("1.4.5"和"1.8.3")之前的所有部分?
我可以想象一些策略,比如拆分" - "然后添加除最后一部分之外的所有内容.或者也许是替代的正则表达式.尽管如此,Bash是我最重要的事情.我不知道语法是什么样子,我已经尝试了一些事情sed和awk,但我缺乏舒适性的bash阵列是挂我.我想你们其中一个bash专家可以在短时间内解决这个问题,并通过一个例子非常快速地教我.
编辑:在命令运行之前我不知道" - "的数量.该方法应处理n >= 1" - ".
您可以使用参数扩展:
${var#pattern}从var的开头删除最短的匹配模式.使用##删除最长匹配模式.%和%%的工作方式类似,但从var的末尾删除.
#!/bin/bash
first="foo-bar-1.4.5"
second="foo-bar-baz-1.8.3"
echo ${first%-*}
echo ${first##*-}
echo ${second%-*}
echo ${second##*-}
Run Code Online (Sandbox Code Playgroud)
输出:
foo-bar
1.4.5
foo-bar-baz
1.8.3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
184 次 |
| 最近记录: |