How to extract jira ticket number with sed?

Viewed 664

I want to extract Jira ticket number from the branch name with sed. This is what I have

echo "PTW-123-branch-name" | sed 's/.*\([A-Z]+-[0-9]+[^-]\).*/\1/'

expected result: PTW-123

What is wrong with the regexp?

2 Answers

You may use this sed:

echo "PTW-123-branch-name" | sed 's/\([0-9]\)-.*$/\1/'

PTW-123

Details:

  • \([0-9]\)-: Matches a digit and captures it in group #1 followed by hyphen
  • .*$: Match remaining string until end
  • \1: Is replacement that puts captured digit back in output

Alternatively you can use cut also:

echo "PTW-123-branch-name" | cut -d- -f1,2

PTW-123

In case you are ok with GNU grep please try following then. Simple explanation would be passing echo command's output as a standard input to grep command. Then in grep command using -oP option to print only matched portion and enabling PCRE regex capabilities here. In match section of grep then using non-greedy match to match till digits which should be followed by -, then if a match is found it will print it.

echo "PTW-123-branch-name"  | grep -oP '^.*?\d+(?=-)'
Related