S
In der Annahme, dass die erste Zeile beim ':' endet
sed 's/^\(.*\).o:$/\1\.o\ \1\.a:/g'
Sed ist einfach, wenn du Regular Expresions verstanden hast, dann hast du mehr als du brauchst, um sed Srkipt zu screiben.
sed kennt Befehle wie 'print' (p) , 'replace' (s), und diese werden am Anfang immer angebenen. Was danach kommt, hängt vom Befehl ab (siehe man page).
Du kannst in Regular Expresions dir bestimmte Teile merken, das geht mit den runden Klammern. Dabei ist es wichtig, diese zu Escapen, denn '(ab)' ist unterschiedlich zu '\(ab\)'. Die erste Regel würde nur bei ...(ab)... übereinstimmen, jedoch die zweite bei ...ab... ...aaaabaaa...., usw.
Dieses Merken mit den runden Klammern hat den Vorteil, dass du beim Ersetzen darauf zureifen kannst: \1, \2, \3, \4 usw. \1 entspricht der ersten Klammerung, \2 der zweiten, usw.
Mit '^\(.*\).o:$' sage ich: Ausgehend von Zeilenanfang (wegen ^) merkt dir alles, bis die Zeile mit '.o' endet (wegen $)
Die Ersetzungsregel '\1\.o\ \1\.a:' sagt nämlich, dass alles, was mit der Such-Regel übereinstimmt, mit der Ersetzungsregel ersetzt wird, wobei \1 der ersten Klammerung entspricht, usw.