Confronta le teste di due file in bash


11

Posso fare diff filea filebper vedere la differenza tra i file. Posso anche fare head -1 fileaper vedere la prima riga di filea o fileb. Come posso combinare questi comandi per mostrare la differenza tra la prima riga di filea e la prima riga di fileb?

Risposte:


22

Se la tua shell supporta la sostituzione di processo , prova:

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

Avevo già visto il comando di sottostazione di processo da qualche parte, ma non sapevo cosa facesse. Grazie !
edi9999,

6

Se stai solo confrontando la prima riga di ogni file, forse ti preoccupi delle modifiche a livello di parola all'interno della riga, usando dwdiff:

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

dwdiffha alcune belle opzioni, come -ccolorare le parole modificate.

Oppure, usando al sedposto di testa:

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

che il manuale di head suggerisce è più portatile di head, poiché la sintassi di head è cambiata nel tempo head -1rispetto ahead -n 1

Inoltre, potresti semplicemente controllare le modifiche, con un po 'meno di battitura:

head -n1 -q filea fileb

che visualizza le due linee, una sotto l'altra, per un facile confronto visivo.


0

Puoi usare:

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

2
Si noti che risponderebbe "lo stesso" se file1 è un file vuoto (o non leggibile) e la prima riga di file2 è vuota.
Stéphane Chazelas,

Non ho detto che questo metodo è 'a prova di idiota' ma se si desidera rapidamente abbinare la prima riga di due file ...
Lambert,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.