comprobar la igualdad de una parte de dos archivos

¿Es posible verificar si la primera línea de dos archivos es igual usando diff(u otro comando bash fácil)?

[Generalmente comprobando la igualdad de primero/último k líneas, o incluso líneas i a j]

preguntado el 03 de mayo de 12 a las 09:05

4 Respuestas

Para diferenciar las primeras k líneas de dos archivos:

$ diff <(head -k file1) <(head -k file2)

Del mismo modo, para diferenciar las últimas k líneas:

$ diff <(tail -k file1) <(tail -k file2)

Para diferenciar las líneas i a j:

diff <(sed -n 'i,jp' file1) <(sed -n 'i,jp' file2)

contestado el 03 de mayo de 12 a las 09:05

¿Qué p significa en 'i, jp'? - Arizona

y para comprobar la igualdad: if diff ...; then echo "equal"; else echo "not equal"; fi - Glenn Jackman

Mi solución parece bastante básica y para principiantes en comparación con la anterior de dogbane, ¡pero aquí es lo mismo!

echo "Comparing the first line from file $1 and $2 to see if they are the same."

FILE1=`head -n 1 $1`
FILE2=`head -n 1 $2`

echo $FILE1 > tempfile1.txt
echo $FILE2 > tempfile2.txt

if diff "tempfile1.txt" "tempfile2.txt"; then
    echo Success
else
    echo Fail
fi

contestado el 03 de mayo de 12 a las 10:05

Mi solución usa el filtrar programa de la patchutils colección de programas. El siguiente comando muestra la diferencia entre el archivo 1 y el archivo 2 desde el número de línea j hasta k:

diff -U 0 file1 file2 | filterdiff --lines j-k

contestado el 03 de mayo de 12 a las 11:05

El siguiente comando muestra la primera línea de ambos archivos.

krithika.450> head -1 temp1.txt temp4.txt
==> temp1.txt <==
Starting CXC <...> R5x BCMBIN (c)  AB 2012

==> temp4.txt <==
Starting CXC <...> R5x BCMBIN (c)  AB 2012

El siguiente comando muestra sí si la primera línea en ambos archivos es igual.

krithika.451> head -1 temp4.txt temp1.txt | awk '{if(NR==2)p=$0;if(NR==5){q=$0;if(p==q)print "yes"}}'
yes
krithika.452> 

contestado el 03 de mayo de 12 a las 09:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.