#!/bin/bash
# ideone boilerplate: run in temp dir
t=$(mktemp -d -t ideone.XXXXXXXX) || exit
trap 'rm -rf "$t"' ERR EXIT
cd "$t"
cat <<\: >MyInitialTextFile.txt
<p><nsup></nsup> <b>Abc 1:2<sup>varied text
<p><nsup></nsup> <b>Abc 1:2<sup>varied text
<p><nsup></nsup> <b>Abc 1:3<sup>varied text
<p><nsup></nsup> <b>Abc 1:4<sup>varied text
<p><nsup></nsup> <b>Abc 1:4<sup>varied text
<p><nsup></nsup> <b>Abc 1:4<sup>varied text
:
awk '/^<p><nsup><\/nsup> <b>/ {
str = substr($0, 21); split(str, n, /<sup>/);
if (n[1] != id) {
if (d) { printf "\n" >d; close(d) }
d = n[1] ".txt"
id = n[1]
sep = ""
}
printf "%s%s", sep, $0 >d
sep = " "
}
END { if (d) printf "\n" >d }' MyInitialTextFile.txt
tail *
IyEvYmluL2Jhc2gKCiMgaWRlb25lIGJvaWxlcnBsYXRlOiBydW4gaW4gdGVtcCBkaXIgCnQ9JChta3RlbXAgLWQgLXQgaWRlb25lLlhYWFhYWFhYKSB8fCBleGl0CnRyYXAgJ3JtIC1yZiAiJHQiJyBFUlIgRVhJVCAKY2QgIiR0IgoKY2F0IDw8XDogPk15SW5pdGlhbFRleHRGaWxlLnR4dAo8cD48bnN1cD48L25zdXA+IDxiPkFiYyAxOjI8c3VwPnZhcmllZCB0ZXh0CjxwPjxuc3VwPjwvbnN1cD4gPGI+QWJjIDE6MjxzdXA+dmFyaWVkIHRleHQKPHA+PG5zdXA+PC9uc3VwPiA8Yj5BYmMgMTozPHN1cD52YXJpZWQgdGV4dAo8cD48bnN1cD48L25zdXA+IDxiPkFiYyAxOjQ8c3VwPnZhcmllZCB0ZXh0CjxwPjxuc3VwPjwvbnN1cD4gPGI+QWJjIDE6NDxzdXA+dmFyaWVkIHRleHQKPHA+PG5zdXA+PC9uc3VwPiA8Yj5BYmMgMTo0PHN1cD52YXJpZWQgdGV4dAo6Cgphd2sgJy9ePHA+PG5zdXA+PFwvbnN1cD4gPGI+LyB7CiAgICBzdHIgPSBzdWJzdHIoJDAsIDIxKTsgc3BsaXQoc3RyLCBuLCAvPHN1cD4vKTsKICAgIGlmIChuWzFdICE9IGlkKSB7CiAgICAgICAgaWYgKGQpIHsgcHJpbnRmICJcbiIgPmQ7IGNsb3NlKGQpIH0KICAgICAgICBkID0gblsxXSAiLnR4dCIKICAgICAgICBpZCA9IG5bMV0KICAgICAgICBzZXAgPSAiIgogICAgfQogICAgcHJpbnRmICIlcyVzIiwgc2VwLCAkMCA+ZAogICAgc2VwID0gIiAgICAgIgogICAgfQpFTkQgeyBpZiAoZCkgcHJpbnRmICJcbiIgPmQgfScgTXlJbml0aWFsVGV4dEZpbGUudHh0Cgp0YWlsICo=