It would be a little more straightforward if it could write them out [in addition to or instead of, as appropriate] a .txt file with only the Block names, not also the drawing file names they come from. But if that's impractical, the format you have can be used -- a routine would have to lop off everything starting with the tab \t character from each line as it goes.
But a question: You have some Blocks that came from being nested in Xrefs [the ones with $0$ in their names] that have the same names except for the source drawing part, such as many of those with names starting with ES. Are those the same, or should they be dealt with separately?
Putting them in would involve an (open) function to get into the .txt file, and a series of (read-line) functions to pull the text of each line, and use of the first part of each line [or all of it, if you make a file with only the names] in Insert commands or (entmake) functions. Those would have to increment the insertion points. Are these things of similar-enough size that one increment-spacing size would space them all appropriately? If not, it could be done by reading each one's bounding box to determine how far to move to put in the next one, but then there's the question of whether their insertion points are in similar positions [all in the middle of Blocks, or some in corners, etc.] -- could get complicated. I think I may have something that deals with that kind of situation, if I can find it. EDIT: It's >>here<<. It does it with all drawings in a folder, but could be adjusted easily enough to use a file like yours instead, assuming the Blocks themselves are all in some place it will be able to find [in the Support File Search Path list].
Kent Cooper, AIA