Porównaj głowice dwóch plików w bash

11

Mogę diff filea filebzobaczyć różnicę między plikami. Mogę również zrobić, head -1 fileaaby zobaczyć pierwszy wiersz filea lub fileb. Jak połączyć te polecenia, aby pokazać różnicę między pierwszym wierszem filea a pierwszym wierszem fileb?

Martijn Burger
źródło

Odpowiedzi:

22

Jeśli twoja powłoka obsługuje podstawianie procesów , spróbuj:

diff <(head -n 1 filea) <(head -n 1 fileb)
Cuonglm
źródło
Widziałem już gdzieś polecenie zastępowania procesu, ale nie wiedziałem, co to zrobiło. Dzięki !
edi9999,
6

Jeśli porównujesz tylko pierwszy wiersz każdego pliku, być może zależy Ci na zmianach poziomu słowa w wierszu, używając dwdiff:

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

dwdiffma kilka fajnych opcji, takich jak -cpokolorowanie zmienionych słów.

Lub używając sedzamiast głowy:

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

którego instrukcja głowy wskazuje jest bardziej mobilny niż głowy, jak składnia głowie czasem się zmieniło head -1vshead -n 1

Możesz też po prostu przyjrzeć się zmianom, nieco mniej pisząc:

head -n1 -q filea fileb

która wyświetla dwie linie, jedna pod drugą, dla łatwego wizualnego porównania.

James Scriven
źródło
0

Możesz użyć:

if [ "`head -1 file1`" == "`head -1 file2`" ]; then echo "the same"; fi
Lambert
źródło
2
Zauważ, że odpowiedziałby „tak samo”, jeśli plik1 jest pustym plikiem (lub nieczytelnym), a pierwszy wiersz pliku2 jest pusty.
Stéphane Chazelas,
Nie powiedziałem, że ta metoda jest „idiotyczna”, ale jeśli chcesz szybko dopasować pierwszą linię dwóch plików ...
Lambert