Voici ce que Birei et Thor veulent dire :
sed -r "s/([a-z]*-[a-z]*-)([0-9]*-)([a-z]*-)(.*)/\1\n\2\n\3\n\4/"
Sortie :
test-artifact-
201251-
balbal-
0.1-SNAPSHOT.jar
Vous devez échapper les parenthèses pour regrouper les expressions :
\([a-z]*-[a-z]*-\)\([0-9]*-\)\([a-z]*-\)\([.]*SNAPSHOT.jar\)
Et utilisez-les avec \1
, \2
, etc.
MODIFIER :A noter également juste avant SNAPSHOT
ce [.]
ne correspondra pas. Entre parenthèses .
est littéral. Il devrait être [0-9.-]*
en fait pour ces chaînes régulières, awk pourrait vous éviter de grouper. :)
il vous suffit de donner le numéro d'index de pièce que vous souhaitez :
awk 'BEGIN{FS=OFS="-"}{print $1,$2,$5,$6}'
sortie :
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