Intervalo de endereços e comando sed

1

Alguém por favor pode me explicar por que a seguinte linha:

echo -e "ab\ncd" | sed "3,4 p"

saída de rendimento:

ab  
cd

Será que as linhas 3 e 4 estão fora do intervalo de entrada?

Eu esperaria uma saída vazia porque a entrada tem apenas duas linhas enquanto o comando foi instruído a examinar as linhas 3 a 4.

    
por Mulligan 11.12.2016 / 23:08

1 resposta

2

Você parece assumir que o comando p do sed irá imprimir apenas as linhas do intervalo especificado. Este não é o caso por padrão.

A menos que você adicione o parâmetro -n a sed , o padrão de entrada será impresso e, com efeito, as linhas correspondentes serão duplicadas.

Considere:

echo -e "a\nb\nc\nd" | sed "3,4 p"

Irá dar-lhe:

a
b
c
c
d
d

Porque no seu exemplo não há linhas 3-4, você obtém as duas primeiras linhas na saída.

Para imprimir apenas as linhas do intervalo especificado:

echo -e "a\nb\nc\nd" | sed -n "3,4 p"
c
d
    
por 12.12.2016 / 02:35