如何有条件地提取bash字符串的一部分。

时间:2013-10-17 12:29:45

标签: bash

我有一个看起来像

的bash字符串
TEST="tags/1.2.3-abc"

我希望在斜杠之后提取部分,即“1.2.3-abc”当且仅当字符串以短语“tags /”开头时。如果后者不是这种情况,我希望字符串不变。

示例:

Input: tags/1.2.3-abc  Output: 1.2.3-abc
Input: 1.2.3-abc       Output: 1.2.3-abc
Input: trunk           Output: trunk 

2 个答案:

答案 0 :(得分:5)

听起来像是Bash中替换运营商的工作。

尝试类似:

TEST="tags/1.2.3-abc"
echo ${TEST#tags/}

您可以在此处详细了解此语法:http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion

答案 1 :(得分:0)

除了剪切命令,你还可以使用bash字符串操作来解决你的问题

TEST='tags/1.2.3-abc';

if test ${TEST#tags/*}; #Test that $TEST contains "tags/*" expression
 then 
   TEST=${TEST:5};      #Re-assign to $TEST the substring after the "tags/"
fi