Saída do comando diff simples

6

Eu vi muitos exemplos do uso do comando diff, mas nenhum detalhando seu uso básico. Aqui está o conteúdo dos dois arquivos que eu gostaria de usar:

cat -A file1.txt
a$
b$
c$
d$

cat -A file2.txt
b$
c$
d$
e$

Se eu usar o comando diff da seguinte forma:

diff file1.txt file2.txt

Eu recebo:

1d0
< a
4a4
> e

O que eu gostaria de saber é o que eles querem dizer com as linhas 1 e 0 em 1d0 e 4 e 4 em 4a4, além dos sinais menor e maior que os sinais. Mais geralmente, como é que há um sinal menor do que antes do sinal a em oposição a um sinal maior que? Qual a diferença?

    
por John_Patrick_Mason 13.06.2017 / 03:52

2 respostas

11

Em o manual diff :

% bl0ck_qu0te%

O > e o < fazem sentido se você olhar para formato de saída lado a lado :

% bl0ck_qu0te%

Exemplo de saídas do manual:

  • lado-a-lado:

    The Way that can be told of is n   <
    The name that can be named is no   <
    The Nameless is the origin of He        The Nameless is the origin of He
    The Named is the mother of all t   |    The named is the mother of all t
                                       >
    Therefore let there always be no        Therefore let there always be no
      so we may see their subtlety,           so we may see their subtlety,
    And let there always be being,          And let there always be being,
      so we may see their outcome.            so we may see their outcome.
    The two are the same,                   The two are the same,
    But after they are produced,            But after they are produced,
      they have different names.              they have different names.
                                       >    They both may be called deep and
                                       >    Deeper and more profound,
                                       >    The door of all subtleties!
    
  • normal:

    1,2d0
    < The Way that can be told of is not the eternal Way;
    < The name that can be named is not the eternal name.
    4c2,3
    < The Named is the mother of all things.
    ---
    > The named is the mother of all things.
    > 
    11a11,13
    > They both may be called deep and profound.
    > Deeper and more profound,
    > The door of all subtleties!
    
por muru 13.06.2017 / 04:22
3

O comando diff é explicado em detalhes aqui . Você encontrará o que procura próximo ao topo da página, sob o título "Como funciona o diff".

Especificamente, 1d0 significa que você deve excluir uma linha do primeiro arquivo para que eles sejam sincronizados até a linha zero. Esta não é a primeira linha do arquivo, é basicamente dizendo. Se você fizer essa exclusão, os dois arquivos serão iniciados no ponto vazio. A próxima linha de saída no arquivo 1 é a primeira linha de saída dos dois arquivos (ou seja, a próxima linha deve ser a linha 1).

Talvez seja melhor você executar diff -c file1.txt file2.txt se quiser algo mais fácil de ler.

    
por b_laoshi 13.06.2017 / 04:09