Saturday, August 31, 2019

linux - sed - how to do regex groups using sed



Is there anyway you can do regex match group using sed like java regex pattern/match/group?




if i have string like



test-artifact-201251-balbal-0.1-SNAPSHOT.jar


how do I use sed just to get the result like:



test-artifact-0.1-SNASHOT.jar



I am wondering does sed allow you to do something like java regex, you define the pattern like:



([a-z]*-[a-z]*-)([0-9]*-)([a-z]*-)([.]*SNAPSHOT.jar)


and then you can get the results as an array like:



test-artifact-
201251-

balbal-
0.1-SNAPSHOT.jar

Answer



You have to escape parentheses to group expressions:



\([a-z]*-[a-z]*-\)\([0-9]*-\)\([a-z]*-\)\([.]*SNAPSHOT.jar\)


And use them with \1, \2, etc.







EDIT: Also note just before SNAPSHOT that [.] will not match. Inside brackets . is literal. It should be [0-9.-]*


No comments:

Post a Comment

hard drive - Leaving bad sectors in unformatted partition?

Laptop was acting really weird, and copy and seek times were really slow, so I decided to scan the hard drive surface. I have a couple hundr...