Inilah yang dimaksud Birei dan Thor:
sed -r "s/([a-z]*-[a-z]*-)([0-9]*-)([a-z]*-)(.*)/\1\n\2\n\3\n\4/"
Keluaran:
test-artifact-
201251-
balbal-
0.1-SNAPSHOT.jar
Anda harus keluar dari tanda kurung ke ekspresi grup:
\([a-z]*-[a-z]*-\)\([0-9]*-\)\([a-z]*-\)\([.]*SNAPSHOT.jar\)
Dan gunakan dengan \1
, \2
, dll.
EDIT :Perhatikan juga tepat sebelum SNAPSHOT
[.]
itu tidak akan cocok. Di dalam tanda kurung .
adalah literal. Seharusnya [0-9.-]*
sebenarnya untuk string biasa itu, awk bisa menyelamatkan Anda dari pengelompokan. :)
Anda cukup memberikan nomor indeks bagian yang Anda inginkan:
awk 'BEGIN{FS=OFS="-"}{print $1,$2,$5,$6}'
keluaran:
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