如何从中提取版本号string=customer-asset-tag-1.0.2.9
?
期望结果:
Component= customer-asset-tag
version number=1.0.2.9
答案1
有很多方法可以做到这一点,例如:
bash 和类似的 shell(参见这里了解更多信息)
$ string=customer-asset-tag-1.0.2.9 $ echo -e "Component: ${string:0:18}\nVersion: ${string:19}" Component: customer-asset-tag Version: 1.0.2.9
awk
$ echo $string | awk -F- -v OFS=- '{print "Component: "$1,$2,$3; print "Version: "$4}' Component: customer-asset-tag Version: 1.0.2.9
awk
这里,我们将的字段分隔符设置为-
(这用于定义字段,第一个字段为$1
,第二个字段$2
为 等等)。我们还将输出字段分隔符设置为 ,-
以便正确打印。perl
$ echo $string | perl -ne '/(.*)-([^-]+)/; print "Component: $1\nVersion: $2"' Component: customer-asset-tag Version: 1.0.2.9
这是三种方法中最强大和最通用的,因为它只是寻找最长的非
-
字符字符串并将其保存为版本,将版本之前的所有内容直到最后一个-
保存为组件。
答案2
提取版本号
echo "customer-asset-tag-1.0.2.9" | sed 's/[a-z-]//g'
Perl 方式实现
echo "customer-asset-tag-1.0.2.9" | perl -ne '/([a-z-]*)-([\d+.+]*)/; print "Component= $1\nVersion= $2\n"'
答案3
在终端中使用以下命令,
$ string=customer-asset-tag-1.0.2.9
$ ver=$(echo $string | awk -F- '{print $NF}')
$ Component=${string/-$ver/}
$ echo "version number=$ver"
version number=1.0.2.9
$ echo "Component=$Component"
Component=customer-asset-tag
或者在 shell 脚本中,
#!/bin/bash
string=customer-asset-tag-1.0.2.9
ver=$(echo $string | awk -F- '{print $NF}')
Component=${string/-$ver/}
echo "version number=$ver"
echo "Component=$Component"
答案4
另一个awk
命令,
$ string=customer-asset-tag-1.0.2.9
$ echo "Component= "$(echo $string | awk '{print substr($1,1,18)}') && echo "Version number="$(echo $string | awk '{print substr($1,20)}')
Component= customer-asset-tag
Version number=1.0.2.9
描述:
echo $string
- 显示分配给变量字符串的值。echo $string | awk '{print substr($1,1,18)}'
|-标准输出被作为以下命令的输入。
substr($1,1,18)
- 从输入中取出第一列并仅将从位置 1 到 18 的字符显示到标准输出。
echo $string | awk '{print substr($1,20)}'
- 显示标准输入中第一列从第 20 个位置开始的字符。
awk '{print substr($x,y,z)}'
x - 列号
y - 起始位置
z - 结束位置