# If you'd like to omit non-matching lines from the result; add ';d' to the end of the expression.
sed -E 's/(?<verse>(?<block>^(?<num>\d+):\d+\s(?<txt>(?s).*?)(?<end>\n{2})(?!(?P=num)))+?)/\n${verse}<br>\n\n/gm;t' <<< "1:10 foo bar
baz
1:11 foo bar
baz
2:20 foo bar
baz
2:21 foo bar
baz
2:22 foo bar
baz
3:30 foo bar
baz
3:21 foo bar
baz
"
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for SED, please visit: https://www.gnu.org/software/sed/manual/html_node/The-_0022s_0022-Command.html