sed: O comando N não lê uma única linha

1

Por que o comando N do sed não lê uma única linha?

# single line without \n
$ echo -en 'abc' | sed -n 'N;p'
$
# I expected 'abc'

# single line with \n
$ echo -en 'abc\n' | sed -n 'N;p'
$
# I expected 'abc'

# two lines
$ echo -en 'abc\n_' | sed -n 'N;p'
abc
_$ 
# works as expected
    
por loentar 16.08.2013 / 14:12

1 resposta

3

Uma linha sem uma nova linha à direita não é uma linha. algumas implementações de sed irão descartá-lo, algumas aceitarão, dentre as quais algumas podem adicionar essa nova linha de retorno de volta.

Em:

echo -en 'abc\n' | sed -n 'N;p'

sed começa com abc em seu espaço de padrão. Em seguida, prossegue com a execução dos comandos especificados. O primeiro N é acrescentar a próxima linha ao espaço de padrão. Não há próxima linha, então isso faz com que sed saia como especificado por POSIX e como documentado.

    
por 16.08.2013 / 14:49

Tags