您是否可以使用sed进行regex匹配组,比如java regex模式/匹配/组?
如果我有类似的字符串
test-artifact-201251-balbal-0.1-SNAPSHOT.jar我如何使用sed来获得这样的结果:
test-artifact-0.1-SNASHOT.jar我想知道sed是否允许您执行类似java regex之类的操作,您可以定义如下模式:
([a-z]*-[a-z]*-)([0-9]*-)([a-z]*-)([.]*SNAPSHOT.jar)然后,您可以将结果作为一个数组得到,如下所示:
test-artifact-
201251-
balbal-
0.1-SNAPSHOT.jar发布于 2012-07-25 13:46:09
必须将括号转义到组表达式:
\([a-z]*-[a-z]*-\)\([0-9]*-\)\([a-z]*-\)\([.]*SNAPSHOT.jar\)并与\1、\2等一起使用。
编辑:还请注意,就在SNAPSHOT之前,[.]将不匹配。括号中的.是字面的。应该是[0-9.-]*
发布于 2012-07-25 13:59:44
这就是Birei和Thor的意思:
sed -r "s/([a-z]*-[a-z]*-)([0-9]*-)([a-z]*-)(.*)/\1\n\2\n\3\n\4/"输出:
test-artifact-
201251-
balbal-
0.1-SNAPSHOT.jar发布于 2012-07-25 14:05:09
事实上,对于那些常规字符串,awk可以使您免于分组。:)
你只需给出你想要的零件索引号:
awk 'BEGIN{FS=OFS="-"}{print $1,$2,$5,$6}' 产出:
kent$ echo "test-artifact-201251-balbal-0.1-SNAPSHOT.jar"|awk 'BEGIN{FS="-";OFS="-"}{print $1,$2,$5,$6}'
test-artifact-0.1-SNAPSHOT.jarhttps://stackoverflow.com/questions/11650940
复制相似问题