2011-12-02 18 views
13

Estoy usando diff con las opciones -y y --suppress-common-lines y la salida es casi perfecta excepto que me gustaría ver los números de línea de los cambios.¿Es posible mostrar el número de línea en la salida de diff lado a lado?

Ejemplo:

fichero1:

line a 
line b 
line c 

fichero2:

line a 
line B 
line c 
line d 

mando y de salida:

$ diff -y --suppress-common-lines file1 file2 
line b              | line B 
                   > line d 

¿Es esta combinación de opciones posibles con diff o me de soltera d otra herramienta?

Respuesta

9

Lamentablemente, la opción -y utiliza el estilo de formateo internamente (al igual que --LFMT-line-format), no puede acumular comandos de formateo con -y. No se puede obtener de los parámetros de formato lo que -y hace, por lo que no se puede solucionar directamente con diff (comprobé el código fuente de 3.2).

Necesita utilizar otra herramienta.

+0

¡Estaba bastante seguro de esto pero gracias por confirmar! Ahora para encontrar otra herramienta ... –

0

Si siempre está comparando las líneas con los mismos números de línea, se puede usar algo como esto:

$ awk 'NR==FNR{a[NR]=$0;next}{x=a[FNR];if($0!=x)printf("%s;%s;%s\n",FNR,x,$0)}' file1 file2 
327;有る;ある 
431;先ず;まず 
543;連れて行く;連れていく 
719;幾ら;いくら 
1318;込む;混む 
1415;かわいそう;可哀相 
1713;だんだん;段々 
2491;大みそか;大晦日 
4120;もうける;儲ける 
4510;ほほ笑む;微笑む 
4512;もうかる;儲かる 
5727;剥げる;剝げる 

FNR (número de archivo de registro) es igual a NR cuando awk está procesando el primer archivo. La instrucción next salta al siguiente registro.

Cuestiones relacionadas