I wouldn't process the "default" log, ever.
You can get halfway there just with a different log format. In this case printing the Hash and Commit message only.
```
git log --pretty=format:'%H %s'
```
And then use `awk` to finish up (making the assumption that ticket refs appear at the start of the commit message)
```
git log --pretty=format:'%H %s' | \
awk -F"[^a-zA-Z0-9]" '$2"-"$3 ~ /^[A-Z]+-[0-9]+$/ {print $2"-"$3":"$1}'
```
Explaining that `awk`:
```
-F"[^a-zA-Z0-9]"
```
Everything that **isn't** alpha or numeric is a field delimiter
```
$2"-"$3 ~ /^[A-Z]+-[0-9]+$/
```
In cases where field 2 and 3 (first two "words" of the commit message) look like they are probably a ticket ref, we continue
```
{print $2"-"$3":"$1}
```
Print the first 3 fields in the desired order.
----
More robust alternative, based heavily on Ed Morton's answer (adapted lightly for the simpler custom log format):
```
git log --pretty=format:'%H %s' \
| awk -v OFS=: \
'
match($2, /^[[:upper:]]+-[[:digit:]]+/)
{ print(substr($2, 1, RLENGTH), $1) }
'
```