Você pode fazer assim com o GNU sed:
sed -r '1 {h; s/ .*//; x}; 1!{G; s/([^\n]*)\n(.*)/ /}' infile
Ou como um script separado:
parse.sed
1 { # run block for first line only
h # save copy of line in hold space
s/ .*// # remove redundant part
x # swap prefix to hold space
}
1! { # when not first line
G # append prefix to pattern space
s/([^\n]*)\n(.*)/ / # reorganize so prefix is the prefix
}
Execute assim:
sed -rf parse.sed infile
Saída:
x.o: x.cpp /u/a.h
x.o: /b.h \
x.o: /c.h \