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?

Odpowiedzi:


22

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

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

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.


0

Możesz użyć:

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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.