解析jar文件名 [英] Parse jar filenames

查看:277
本文介绍了解析jar文件名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设您希望 best 模式从jar文件名中提取名称和版本。我得到的东西不是那么糟可以在 regexr 上使用,但不适用于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文件名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆