Compara las cabezas de dos archivos en bash


11

Puedo hacer diff filea filebpara ver la diferencia entre archivos. También puedo hacer head -1 fileapara ver la primera línea de filea o fileb. ¿Cómo puedo combinar estos comandos para mostrar la diferencia entre la primera línea de archivo y la primera línea de archivo b?

Respuestas:


22

Si su shell admite la sustitución de procesos , intente:

diff <(head -n 1 filea) <(head -n 1 fileb)

Ya había visto el comando de sustitución de proceso en alguna parte, pero no sabía lo que hacía. Gracias !
edi9999

6

Si solo está comparando la primera línea de cada archivo, tal vez le interesen los cambios a nivel de palabra dentro de la línea, utilizando dwdiff:

dwdiff <(head -n 1 filea) <(head -n 1 fileb)

dwdifftiene algunas buenas opciones, como -ccolorear las palabras cambiadas.

O, usando en sedlugar de cabeza:

dwdiff <(sed 1q filea) <(sed 1q fileb)

que el manual para head sugiere que es más portátil que head, ya que la sintaxis para head ha cambiado con el tiempo head -1vshead -n 1

Además, podría simplemente observar los cambios, con un poco menos de tipeo:

head -n1 -q filea fileb

que muestra las dos líneas, una debajo de la otra, para facilitar la comparación visual.


0

Puedes usar:

if [ "`head -1 file1`" == "`head -1 file2`" ]; then echo "the same"; fi

2
Tenga en cuenta que respondería "lo mismo" si el archivo1 es un archivo vacío (o no legible) y la primera línea del archivo2 está vacía.
Stéphane Chazelas

No dije que este método es 'a prueba de idiotas', pero si quiere hacer coincidir rápidamente la primera línea de dos archivos ...
Lambert
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.