使用字符串替换:
s='olap4j-xmla-1.0.1.500'
read var1 var2 <<< "${s%-*} ${s##*-}"
现在检查变量:
declare -p var1 var2
declare -- var1="olap4j-xmla"
declare -- var2="1.0.1.500"
更新:
感谢下面的pjh评论,我已经意识到OP在某些情况下需要3而不是2。
考虑到这一点,我认为遵循sed
会更好:
sed -E 's/^(.+)-([0-9.]+)(\.([^0-9]+))?$/\1 \2 \4/' <<< "olap4j-xmla-1.2.0.SNAPSHOT"
olap4j-xmla 1.2.0 SNAPSHOT
sed -E 's/^(.+)-([0-9.]+)(\.([^0-9]+))?$/\1 \2 \4/' <<< "olap4j-xmla-1.2.0"
olap4j-xmla 1.2.0
如上例所示,可以将sed
的输出馈送到read
。
,
#!/bin/bash
while read LINE; do
var1=$(cut -d '-' -f1,2 <<< "$LINE")
tmp=$(cut -d '-' -f3 <<< "$LINE")
var2=$(sed 's/\(.*\)\.[a-zA-Z]*$/\1/' <<< "$tmp")
var3=$(sed -n 's/.*\.\([a-zA-Z]*$\)/\1/p' <<< "$tmp")
echo -e "var1=$var1; var2=$var2; var3=$var3"
done < file.txt
输出:
var1=olap4j-xmla; var2=1.0.1.500; var3=
var1=olap4j-xmla; var2=1.2.0; var3=
var1=olap4j-xmla; var2=1.2.0; var3=SNAPSHOT
var1=olap4j-xmla; var2=1.2.0; var3=RELEASE
本文链接:https://www.f2er.com/3124887.html