O que significam esses códigos em 'diff' e como se livrar deles?

6

Estou usando diff para encontrar a diferença do arquivo atual para um destino.

O comando que eu tenho é diff -w --from-file /tmp/new_list.txt /tmp/protected_client.txt

A saída é

8c8,9
> VM-E

Eu filtrou isso usando: diff -w --from-file /tmp/new_list.txt /tmp/protected_client.txt | tail -n +2 | sed 's/> //g'

Ótimo. Agora, se eu tiver várias diferenças, vejo:

2d1
< esxi02
3a3
> psc-dr

Duas perguntas. Quais são esses valores. Eu sei que < significa que o valor está em from-file mas não em to-file e > é o contrário,

Segunda pergunta: como posso me livrar desses códigos 2d1 e 3a3 ou o que aparecer.

    
por suhas savkoor 28.07.2017 / 23:00

1 resposta

10

Esses códigos fornecem um número de linha e um tipo de diferença que foi encontrado:

  • a significa adicionado
  • c alterado
  • d eliminado

Por exemplo: 8c8,9 significa que o número da linha 8 no primeiro arquivo ( --from-file ) foi alterado para algo e que algo é armazenado nas linhas 8 -9 no segundo arquivo. Da mesma forma, 2d1 significa que a linha 2 do primeiro arquivo foi excluída, esperada após a linha 1 no segundo arquivo, etc.

Eu não acho que você realmente quer se livrar desses códigos, eles são bastante úteis, mas se você insistir em removê-los (ou mudar para outra coisa), então apenas brinque com os seguintes seis formatos de saída (aqui eu suponha que você esteja usando o diff do GNU):

  • --old-line-format
  • --new-line-format
  • --old-group-format
  • --new-group-format
  • --changed-group-format
  • --unchanged-group-format

Eu não cobrirei todos os detalhes da sintaxe (bastante complexa) aqui, você encontrará a descrição deles no capítulo info diff under If-then-else . O abaixo lhe dará exatamente o que você está pedindo, ou seja, sem códigos, apenas < e > :

diff --old-line-format=$'< %l\n' --new-line-format=$'> %l\n' \
     --old-group-format=$'%<' --new-group-format=$'%>' \
     --changed-group-format=$'%>' --unchanged-group-format='' file1 file2

Você pode criar o alias disso, se quiser.

    
por 29.07.2017 / 00:25