# If you'd like to omit non-matching lines from the result; add ';d' to the end of the expression.
sed -E 's/^.*:\s+([A-Z].*)_(\D+)_(\d+).*/\1,\2,\3/gm;t' <<< "dog-Cf-Nox1: Porites_lobata_1381 49.126 572 275 8 1 564 1 564 0.0 563
dog-Cf-Nox1: Porites_australiensis_5912 48.776 572 277 8 1 564 1 564 0.0 560
dog-Cf-Nox1: Astreopora_sp_20372 48.776 572 276 9 1 564 1 563 0.0 555
dog-Cf-Nox1: Montastraea_cavernosa_106939 48.148 567 279 7 5 564 6 564 0.0 555
dog-Cf-Nox1: Seriatopora_hystrix_66126 50.000 554 262 7 18 564 19 564 0.0 553
dog-Cf-Nox1: Porites_australiensis_4812 46.946 573 287 6 1 564 1 565 0.0 553
dog-Cf-Nox1: Stylophora_pistillata_7748 49.009 555 268 7 17 564 18 564 0.0 550
dog-Cf-Nox1: Porites_lobata_724 46.435 575 289 7 1 564 1 567 0.0 548
dog-Cf-Nox1: Acropora_digitifera_16260 46.935 571 288 7 1 564 1 563 0.0 538"
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