The nice thing about `grep -o` is that it prints each match on a separate line (whether they occur multiple times on a line or not), which is not very natural for `sed`. I can replicate it with two `sed`s, but not one:
```
sed "s/\(--choices.\)/\n\1/g" foo | sed -n 's/^--choices.\(.*\)/\1/pg'
```