我有一个看起来像的 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
我有一个看起来像的 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
听起来像是 Bash 中替换运算符的工作。
尝试类似:
TEST="tags/1.2.3-abc"
echo ${TEST#tags/}
您可以在此处阅读有关此语法的更多信息:http ://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion
除了 cut 命令,您还可以使用 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