¿Qué significan estos códigos en 'diff' y cómo deshacerse de ellos?

Estoy usando diff para encontrar la diferencia del file actual a un objective.

El command que tengo es diff -w --from-file /tmp/new_list.txt /tmp/protected_client.txt

El resultado es

 8c8,9 > VM-E 

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

Estupendo. Ahora, si tengo múltiples diferencias, veo:

 2d1 < esxi02 3a3 > psc-dr 

Dos preguntas. ¿Cuáles son estos valores? Sé que < significa que el valor está en from-file pero no en to-file y > es al revés,

Segunda pregunta: ¿cómo me deshago de estos códigos 2d1 y 3a3 o lo que sea que surja?

Esos códigos le dan un número de línea y un tipo de diferencia que se ha encontrado:

  • a significa agregado
  • c cambiado
  • d borrado

Por ejemplo: 8c8,9 significa que la línea número 8 en el primer file ( --from-file ) ha cambiado a algo y este algo se almacena en las líneas 8-9 en el segundo file. Del 2d1 modo 2d1 significa que la línea 2 del primer file se ha eliminado, se espera después de la línea 1 en el segundo file, etc.

No creo que realmente quieras deshacerte de esos códigos, son bastante útiles, pero si insistes en eliminarlos (o cambiar a otra cosa), entonces juega con los siguientes seis formattings de salida (aquí supongo que eres usando GNU diff):

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

No cubriré todos los detalles de la syntax (bastante compleja) aquí, encontrarán su descripción en la info diff bajo el capítulo If-then-else . El siguiente le dará exactamente lo que está pidiendo, es decir, no hay códigos, solo pure < y > :

 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 

Puede hacer un alias si lo desea.