pt N e P opção de comando multilinha não funciona como esperado

0

Amostra de dados:

output=$(cat <<EOF
This is line 1.
This is line 2.
This is line 3.
This is line 4.
This is line 5.
This is line 6.
EOF
)
echo "${output}" > ~/data8.txt

por que duas linhas abaixo retornam o mesmo?

sed '{
N
3,$P
}' ~/data8.txt

This is line 1. 
This is line 2. 
This is line 3. 
This is line 3. 
This is line 4. 
This is line 5. 
This is line 5. 
This is line 6.


sed '{
N
4,$P
}' ~/data8.txt

Espero retorno acima da linha:

This is line 1.
This is line 2.
This is line 3.
This is line 4.
This is line 4.
This is line 5.
This is line 5.
This is line 6.

Mas isso retorna:

This is line 1.
This is line 2.
This is line 3.
This is line 3.
This is line 4.
This is line 5.
This is line 5.
This is line 6.

Por favor, sua ajuda no comportamento estranho.

    
por Esteban Alvino 16.08.2017 / 01:01

1 resposta

1

Quando a linha 3 é lida, a linha 4 é adicionada pelo comando N , então o endereço 4,$ corresponde e o comando P é executado, imprimindo a primeira linha no buffer, que é a linha 3.

O resultado é o mesmo porque as linhas 3 e 4 são lidas juntas, portanto, não importa se o endereço diz 3,$ ou 4,$ .

    
por 16.08.2017 / 07:26

Tags