^
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