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.