So sánh đầu của hai tệp trong bash


11

Tôi có thể làm diff filea filebđể thấy sự khác biệt giữa các tập tin. Tôi cũng có thể làm head -1 fileađể xem dòng đầu tiên của filea hoặc fileb. Làm thế nào tôi có thể kết hợp các lệnh này để hiển thị sự khác biệt giữa dòng filea đầu tiên và dòng fileb đầu tiên?

Câu trả lời:


22

Nếu shell của bạn hỗ trợ thay thế quá trình , hãy thử:

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

Tôi đã thấy lệnh trạm biến áp ở đâu đó, nhưng không biết nó đã làm gì. Cảm ơn !
edi9999

6

Nếu bạn chỉ so sánh dòng đầu tiên của mỗi tệp, có thể bạn quan tâm đến các thay đổi cấp độ từ trong dòng, sử dụng dwdiff:

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

dwdiffcó một số tùy chọn tốt đẹp, như -ctô màu các từ đã thay đổi.

Hoặc, sử dụng sedthay vì đầu:

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

hướng dẫn cho đầu gợi ý là dễ di chuyển hơn đầu, vì cú pháp cho đầu đã thay đổi theo thời gian head -1so vớihead -n 1

Ngoài ra, bạn chỉ có thể thay đổi nhãn cầu, với một chút gõ:

head -n1 -q filea fileb

trong đó hiển thị hai dòng, một dòng bên dưới, để so sánh trực quan dễ dàng.


0

Bạn có thể dùng:

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

2
Lưu ý rằng nó sẽ trả lời "giống nhau" nếu tệp1 là một tệp trống (hoặc không thể đọc được) và dòng đầu tiên của tệp2 trống.
Stéphane Chazelas

Tôi không nói rằng phương pháp này là 'bằng chứng ngốc' nhưng nếu bạn muốn nhanh chóng khớp dòng đầu tiên của hai tệp ...
Lambert
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.