^ e $ em BRE sempre correspondem no início e fim de linha , conforme descrito aqui .
Qualquer sed que use BRE fará o mesmo. No caso de usar o comando N , sed viu várias linhas como uma linha longa no espaço padrão, com cada linha real separada por nova linha incorporada \n (literal \ e n ).
Para confirmação:
printf '1\n2\n' | sed '1N;/2$/d'
não produz nada. E:
printf '1\n2\n' | sed '1N;/1$/d'
deu a você:
1
2
Ou usando o comando l ook para mais detalhes:
$ printf '1\n2\n' | sed 1N\;l
1\n2$
1
2
$ printf '1\n2\n' | sed 1N\;l | od -t a
0000000 1 \ n 2 $ nl 1 nl 2 nl
0000012