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?

Jawaban:


22

Jika shell Anda mendukung substitusi proses , coba:

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

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.


0

Kamu bisa menggunakan:

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.