给定字符串
"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
个"-"符号。
sed
和awk
可以。 - Dane O'Connorecho "foo-bar-bax-1.8.3" | awk -F'-' '{print $(NF-1)}'
或者类似的东西) - njzk2