首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅从行集中获取版本号

仅从行集中获取版本号
EN

Stack Overflow用户
提问于 2014-05-16 03:02:27
回答 4查看 218关注 0票数 2

如何从一组行中仅获取版本?

以下是inn平面文件中的行:

代码语言:javascript
复制
./org.jamon/jamon-runtime/jars/jamon-runtime-2.3.1.jar
./org.apache.ftpserver/ftplet-api/bundles/ftplet-api-1.0.0.jar
./org.clojars.jasonjckn/kafka_2.9.2/jars/kafka_2.9.2-0.7.2-test1.jar
./org.apache.ftpserver/ftpserver-deprecated/jars/ftpserver-deprecated-1.0.0-M2.jar
./org.codehaus.jettison/jettison/bundles/jettison-1.1.jar
./stax/stax-api/jars/stax-api-1.0.1.jar

输出:

代码语言:javascript
复制
 2.3.1
 1.0.0
 0.7.2-test1
 1.0.0-M2
 1.1
EN

回答 4

Stack Overflow用户

发布于 2014-05-16 03:54:25

对于sed解决方案:

代码语言:javascript
复制
sed 's/.*-\([0-9][0-9.]*[^\/]*\)\.jar$/\1/'

解释:

  • 替换: anything +连字符+ revision + ".jar“仅包含revision,其中:

  • revision标识为:以数字开头,后跟数字或圆点,后跟除斜杠/之外的任何文本,并且前面有一个连字符-.

  • ".jar”at the end-of-line.
票数 3
EN

Stack Overflow用户

发布于 2014-05-16 03:15:10

使用带有-P选项的GNU (用于向前看和向后看的PCRE正则表达式):

代码语言:javascript
复制
grep -oP '(?<=-)[0-9.]+[-[:alnum:]]*(?=\.jar)' file
2.3.1
1.0.0
0.7.2-test1
1.0.0-M2
1.1
1.0.1

正如注释中建议的那样,cbuckley的更通用的表达方式是(如果您的文件具有.jar以外的扩展名,则可以使用:

代码语言:javascript
复制
grep -oP '(?<=-)[\d.]+[-\w]*(?=\.\w+)' file
票数 1
EN

Stack Overflow用户

发布于 2014-05-16 03:19:46

这就是了:

代码语言:javascript
复制
awk -F/ '{n=split($NF,a,"-");if (a[n-1]~/[0-9.]+/) a[n]=a[n-1]"-"a[n];sub(/\.jar$/,"",a[n]);print a[n]}' file
2.3.1
1.0.0
0.7.2-test1
1.0.0-M2
1.1
1.0.1

如果你有gnu grep使用Jaypal解决方案:),这个awk应该可以在大多数系统上工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23686625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档