Tôi có hai tệp cấu hình, bản gốc từ trình quản lý gói và một tệp tùy chỉnh được tự sửa đổi. Tôi đã thêm một số ý kiến để mô tả hành vi.
Làm thế nào tôi có thể chạy diff
trên các tập tin cấu hình, bỏ qua các ý kiến? Một dòng nhận xét được xác định bởi:
- khoảng trắng hàng đầu tùy chọn (tab và dấu cách)
- dấu băm (
#
) - bất cứ nhân vật nào khác
Biểu thức chính quy (đơn giản nhất) bỏ qua yêu cầu đầu tiên sẽ là #.*
. Tôi đã thử tùy chọn --ignore-matching-lines=RE
( -I RE
) của GNU diff 3.0, nhưng tôi không thể làm cho nó hoạt động với RE đó. Tôi cũng đã thử .*#.*
và .*\#.*
không gặp may. Nghĩa đen là đặt dòng ( Port 631
) RE
không khớp với bất cứ thứ gì, cũng không giúp đặt RE giữa các dấu gạch chéo.
Như đề xuất trong hương vị regex của công cụ khác có vẻ thiếu? , Tôi đã thử grep -G
:
grep -G '#.*' file
Điều này có vẻ phù hợp với các ý kiến, nhưng nó không hoạt động diff -I '#.*' file1 file2
.
Vì vậy, nên sử dụng tùy chọn này như thế nào? Làm thế nào tôi có thể diff
bỏ qua một số dòng nhất định (trong trường hợp của tôi, ý kiến)? Vui lòng không đề xuất grep
ing tệp và so sánh các tệp tạm thời.
diff -I
không hành xử như tôi mong đợi. Tôi đã cập nhật câu trả lời của mình với một ví dụ làm rõ hành vi này cho tôi.
-I
tùy chọn gây ra một khối sẽ bị loại bỏ chỉ khi tất cả các dòng của nó phù hợp với regexp. Vì vậy, bạn có thể bỏ qua thay đổi chỉ nhận xét theo cách đó, nhưng không thay đổi nhận xét gần thay đổi không nhận xét.