Saya punya dua file konfigurasi, yang asli dari manajer paket dan yang disesuaikan dimodifikasi oleh saya sendiri. Saya telah menambahkan beberapa komentar untuk menggambarkan perilaku.
Bagaimana saya bisa menjalankan diff
file konfigurasi, melewatkan komentar? Baris yang dikomentari ditentukan oleh:
- spasi kosong opsional (tab dan spasi) opsional
- tanda pagar (
#
) - karakter apa pun lainnya
Ekspresi reguler (paling sederhana) yang melewatkan persyaratan pertama adalah #.*
. Saya mencoba opsi --ignore-matching-lines=RE
( -I RE
) dari GNU diff 3.0, tetapi saya tidak bisa membuatnya bekerja dengan RE itu. Saya juga mencoba .*#.*
dan .*\#.*
tidak berhasil. Secara harfiah menempatkan garis ( Port 631
) karena RE
tidak cocok dengan apa pun, juga tidak membantu menempatkan RE di antara garis miring.
Seperti yang disarankan dalam rasa "beda" alat regex tampaknya kurang? , Saya mencoba grep -G
:
grep -G '#.*' file
Ini sepertinya cocok dengan komentar, tetapi tidak berhasil diff -I '#.*' file1 file2
.
Jadi, bagaimana seharusnya opsi ini digunakan? Bagaimana saya bisa diff
melewati baris tertentu (dalam kasus saya, komentar)? Tolong jangan menyarankan grep
file dan membandingkan file sementara.
diff -I
tidak berperilaku seperti yang saya harapkan. Saya memperbarui jawaban saya dengan contoh yang menjelaskan perilaku ini untuk saya.
-I
pilihan menyebabkan blok untuk diabaikan hanya jika semua lini cocok regexp. Jadi Anda dapat mengabaikan perubahan hanya-komentar seperti itu, tetapi bukan perubahan komentar yang dekat dengan perubahan non-komentar.