Vergleichen Sie die Köpfe von zwei Dateien in Bash

11

Ich kann tun diff filea fileb, um den Unterschied zwischen Dateien zu sehen. Ich kann auch head -1 fileadie erste Zeile von filea oder fileb sehen. Wie kann ich diese Befehle kombinieren, um den Unterschied zwischen der ersten Zeile von filea und der ersten Zeile von fileb anzuzeigen?

Martijn Burger
quelle

Antworten:

22

Wenn Ihre Shell die Prozessersetzung unterstützt , versuchen Sie Folgendes:

diff <(head -n 1 filea) <(head -n 1 fileb)
cuonglm
quelle
Ich hatte den Befehl zur Prozessersetzung bereits irgendwo gesehen, wusste aber nicht, was er tat. Vielen Dank !
edi9999
6

Wenn Sie nur die erste Zeile jeder Datei vergleichen, interessieren Sie sich möglicherweise für Änderungen auf Wortebene innerhalb der Zeile, indem Sie Folgendes verwenden dwdiff:

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

dwdiffhat einige nette Optionen, wie -cdie geänderten Wörter zu kolorieren.

Oder verwenden Sie sedanstelle von Kopf:

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

die das Handbuch für den Kopf schlägt vor , sind mehr tragbar als Kopf, wie die Syntax für Kopf im Laufe der Zeit verändert hat head -1vshead -n 1

Außerdem könnten Sie die Änderungen mit etwas weniger Tipparbeit genau betrachten:

head -n1 -q filea fileb

Hier werden die beiden Zeilen zum einfachen visuellen Vergleich untereinander angezeigt.

James Scriven
quelle
0

Sie können verwenden:

if [ "`head -1 file1`" == "`head -1 file2`" ]; then echo "the same"; fi
Lambert
quelle
2
Beachten Sie, dass es "dasselbe" beantworten würde, wenn Datei1 eine leere Datei (oder nicht lesbar) ist und die erste Zeile von Datei2 leer ist.
Stéphane Chazelas
Ich habe nicht gesagt, dass diese Methode "idiotensicher" ist, aber wenn Sie schnell die erste Zeile von zwei Dateien
Lambert