Warum so umständlich?
Im Manual findet sich folgender Parameter:
Zitat von
man grep / info grep:
-o, --only-matching
Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.
Damit wäre das Problem schon gelöst gewesen