diff -B o comando não é simétrico?

1

Este é o conteúdo de um.txt ( REMARK : ignorar a primeira linha contendo \\; não pude colocar linhas em branco no início do código enquanto escrevia a pergunta. Então o arquivo inicia da segunda linha, ou seja, 2 linhas em branco, depois uma, depois duas, depois 9 espaços em branco e depois três)

\  


one
two  









three

Este é o conteúdo de two.txt ( REMARK : igual ao anterior, ou seja, três linhas em branco, depois uma, linha em branco, duas, linha em branco, três)

\



one  

two

three  

Então, quando eu faço

diff -B one.txt two.txt

Eu recebo a saída

3,10d2
< one
< two
< 
< 
< 
< 
< 
< 
11a4
> one
12a6
> two

E quando eu faço

diff -B two.txt one.txt

Eu recebo uma saída vazia, ou seja, nenhuma diferença entre os dois arquivos.
O que está acontecendo? O comando diff não deve ser simétrico?

    
por Shraddheya Shendre 06.12.2016 / 07:42

1 resposta

1

diff fil1 file2  

O que o diff faz é imprimir as mudanças necessárias para tornar o arquivo2 idêntico ao arquivo1.

As alterações necessárias para tornar o arquivo1 igual ao arquivo2 são definitivamente diferentes das alterações necessárias para fazer o oposto. Vamos dar uma olhada em um exemplo simples: arquivo1 contém apenas uma palavra one e arquivo2 contém apenas uma palavra two , com diff file1 file2 você recebe:

1c1
< one
---
> two  

e com diff file2 file1 você recebe:

1c1
< two
---
> one

Então o diff não é simétrico, não deveria ser.

Agora, com relação à opção -B , o manual diz:

-B, --ignore-blank-lines        ignore changes where lines are all blank 

-B não significa ignorar linhas em branco da entrada, isso significa ignorar alterações que estão em branco. se você fizer diff two.txt one.txt você recebe:

3d2
<
5d3
<
6a5,12
>
>
>
>
>
>
>
>

todas as três alterações são linhas em branco, por isso não imprime nada.

    
por 06.12.2016 / 08:10

Tags