Порівняйте голови двох файлів у bash


11

Я можу зробити, diff filea filebщоб побачити різницю між файлами. Я також можу зробити, head -1 fileaщоб побачити перший рядок файли або fileb. Як я можу комбінувати ці команди, щоб показати різницю між першим рядком файли та першим рядком fileb?

Відповіді:


22

Якщо ваша оболонка підтримує процес заміни , спробуйте:

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

Я вже десь бачив команду процесу підрозділу, але не знав, що це робиться. Дякую !
edi9999

6

Якщо ви порівнюєте лише перший рядок кожного файлу, можливо, ви дбаєте про зміни на рівні слова в рядку, використовуючи dwdiff:

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

dwdiffє кілька приємних варіантів, як -cрозфарбувати змінені слова.

Або, використовуючи sedзамість голови:

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

що посібник для голови пропонує більш портативний, ніж головний, оскільки синтаксис для голови змінився з часом head -1протиhead -n 1

Крім того, ви можете просто окомплектувати зміни, трохи менше ввівши:

head -n1 -q filea fileb

який відображає дві лінії, одну нижче іншої, для зручного візуального порівняння.


0

Ви можете використовувати:

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

2
Зауважте, що він би відповів "тим самим", якщо file1 - порожній файл (або не читабельний), а перший рядок file2 порожній.
Стефан Шазелас

Я не казав, що цей метод є "ідіотським доказом", але якщо ви швидко хочете відповідати першому рядку з двох файлів ...
Ламберт,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.