Trabalho típico de awk
:
awk '$1 == "start" {d[++n] = $2; next}
$1 == "end" {n--; next}
{
printf "%s ", $1
for(i=1;i<=n;i++) printf "%s/",d[i]
print $2
}'
(no Solaris, você pode precisar de /usr/xpg4/bin/awk
ou nawk
).
Embora também possa ser feito com sed
:
sed '/^start /{s///;x;G;s/\n//;s:$:|:;h;d;}
/^end/{g;s:[^|]*|$::;h;d;}
G;s/ \(.*\)\n\(.*\)/ /;y:|:/:'
(aqui assumindo que os caminhos não contêm |
caracteres).