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?

Antworten:


22

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

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

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.


0

Sie können verwenden:

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.