Esto es lo que quieren decir Birei y Thor:
sed -r "s/([a-z]*-[a-z]*-)([0-9]*-)([a-z]*-)(.*)/\1\n\2\n\3\n\4/"
Salida:
test-artifact-
201251-
balbal-
0.1-SNAPSHOT.jar
Tienes que escapar de los paréntesis para agrupar expresiones:
\([a-z]*-[a-z]*-\)\([0-9]*-\)\([a-z]*-\)\([.]*SNAPSHOT.jar\)
Y úsalos con \1
, \2
, etc.
EDITAR :También tenga en cuenta justo antes de SNAPSHOT
que [.]
no coincidirá. Corchetes interiores .
es literal. Debería ser [0-9.-]*
de hecho, para esas cadenas regulares, awk podría salvarlo de la agrupación. :)
simplemente da el número de índice de la pieza que desea:
awk 'BEGIN{FS=OFS="-"}{print $1,$2,$5,$6}'
salida:
kent$ echo "test-artifact-201251-balbal-0.1-SNAPSHOT.jar"|awk 'BEGIN{FS="-";OFS="-"}{print $1,$2,$5,$6}'
test-artifact-0.1-SNAPSHOT.jar