本文介绍了解析jar文件名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设您希望 best 模式从jar文件名中提取名称和版本。我得到的东西不是那么糟可以在上使用,但不适用于bash。这是因为bash不支持非贪婪的正则表达式。那么应该如何处理呢?
Let's say you want the best pattern to extract both name and version from a jar filename. I got something not so bad which works on regexr but not with bash. This is because bash does not support non-greedy regex. So how should one handle this?
#!/bin/bash
filename="./log4j-enhanced-3.5.100-v20130422-1538.jar"
if [[ "$filename" =~ \.\/(.*?)-([0-9].*)\.jar ]]; then
echo "name = ${BASH_REMATCH[1]}"
echo "version = ${BASH_REMATCH[2]}"
fi
# expected :
# name = log4j-enhanced
# version = 3.5.100-v20130422-1538
使用unix实用程序是可以的,但请让它可读。
Usage of unix utilities is ok, but please make it readable.
推荐答案
使用GNU bash的:
With GNU bash's Parameter Expansion :
filename="./log4j-enhanced-3.5.100-v20130422-1538.jar"
filename="${filename#./}"
name="${filename%%-[0-9]*}"
version="${filename#$name-}"
version="${version%.jar}"
echo "name = $name"
echo "version = $version"
输出:
name = log4j-enhanced
version = 3.5.100-v20130422-1538
这篇关于解析jar文件名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!