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 difffile 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 REtidak 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 diffmelewati baris tertentu (dalam kasus saya, komentar)? Tolong jangan menyarankan grepfile dan membandingkan file sementara.
diff -Itidak berperilaku seperti yang saya harapkan. Saya memperbarui jawaban saya dengan contoh yang menjelaskan perilaku ini untuk saya.
-Ipilihan 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.