A diferença está relacionada com entrada e saída. No primeiro caso, você está inserindo um \n ewline, sim, mas ainda está operando no mesmo espaço de padrão - e assim a ^ head do espaço padrão permanece onde está, mesmo que contenha novas linhas incorporadas - que você insere para cada ocorrência de < .
Mas, no segundo caso, você está trabalhando com um novo sed e lendo a última saída sed s como entrada - e, portanto, todas as novas linhas que ele injetou contam como linhas de entrada separadas agora, e cada um recebe seu próprio ^ head do espaço padrão.
echo ..... |
sed 's/./&\
/g;s/^/sed1/' |
sed 's/^/sed2/'
sed2sed1.
sed2.
sed2.
sed2.
sed2.
sed2
A propósito ...
sed 's/&/</g;s/</\
/g'
... provavelmente é mais facilmente escrito ...
sed 'y/&</\n\n/'
... mas se você quiser apenas colocar uma nova linha por trás de cada [&<] e substituir cada & por < , poderá fazer:
sed 's/[&<]/<\
/g'
... mas sua saída não corresponde à sua entrada ...