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.