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 ...