我是shell脚本的新手,我想在shell脚本中解析以下字符串:
aspj-arch-bpm-oracle-11.1.1.7-6.2.1.10000.jar
aspj-arch-ecm-oracle-wcc-11.1.1.7-6.2.1.10000.jar
aspj-arch-rules-opa-10.4.2-server-6.0.2.10000.jar
spring-webmvc-portlet-3.0.5.RELEASE.jar
这里我想读取所有字符串,我需要两个值。
value1 = aspj-arch-bpm-oracle-11.1.1.7
value2 = 6.2.1.10000
和.jar应该删除。
这里我可以通过使用for循环
来读取所有字符串for i in *
do
echo "$i"
done
但在这里我想要打印字符串,我想要两个像这样的值
for i in *
do
value1= "some caommand"
value2= "some command"
echo $value1
echo $value2
done.
如何使用shell脚本执行此操作。
答案 0 :(得分:0)
您可以使用parameter substitution:
while read line; do
value1=${line%-*.jar}
value2=${line##*-}
value2=${value2%.jar}
echo "Value 1: $value1"
echo "Value 2: $value2"
done < input_file.txt
对于您提供的输入,这会给出:
Value 1: aspj-arch-bpm-oracle-11.1.1.7
Value 2: 6.2.1.10000
Value 1: aspj-arch-ecm-oracle-wcc-11.1.1.7
Value 2: 6.2.1.10000
Value 1: aspj-arch-rules-opa-10.4.2-server
Value 2: 6.0.2.10000
Value 1: spring-webmvc-portlet
Value 2: 3.0.5.RELEASE
如果您想在一个命令中获取sed
,也可以使用value2
:
value2=$(sed 's/.*-\(.*\).jar/\1/g' <<< $line)