Bandingkan kepala dua file dalam bash

11

Saya bisa lakukan diff filea filebuntuk melihat perbedaan antar file. Saya juga bisa lakukan head -1 fileauntuk melihat baris pertama filea atau fileb. Bagaimana saya bisa menggabungkan perintah-perintah ini untuk menunjukkan perbedaan antara baris pertama filea dan baris pertama file?

Martijn Burger
sumber

Jawaban:

22

Jika shell Anda mendukung substitusi proses , coba:

diff <(head -n 1 filea) <(head -n 1 fileb)
cuonglm
sumber
Saya sudah melihat perintah proses substitusi di suatu tempat, tetapi tidak tahu apa yang dilakukannya. Terima kasih!
edi9999
6

Jika Anda hanya membandingkan baris pertama dari setiap file, mungkin Anda peduli dengan perubahan level kata dalam baris tersebut, menggunakan dwdiff:

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

dwdiffmemiliki beberapa opsi yang bagus, seperti -cmewarnai kata-kata yang diubah.

Atau, menggunakan sedbukannya kepala:

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

yang disarankan oleh manual untuk head lebih portabel daripada head, karena sintaks untuk head telah berubah dari waktu ke waktu head -1vshead -n 1

Selain itu, Anda bisa melihat perubahannya, dengan sedikit mengetik:

head -n1 -q filea fileb

yang menampilkan dua garis, satu di bawah yang lain, untuk perbandingan visual yang mudah.

James Scriven
sumber
0

Kamu bisa menggunakan:

if [ "`head -1 file1`" == "`head -1 file2`" ]; then echo "the same"; fi
Lambert
sumber
2
Perhatikan bahwa itu akan menjawab "sama" jika file1 adalah file kosong (atau tidak dapat dibaca) dan baris pertama file2 kosong.
Stéphane Chazelas
Saya tidak mengatakan bahwa metode ini adalah 'bukti idiot' tetapi jika Anda dengan cepat ingin mencocokkan baris pertama dari dua file ...
Lambert