Ho due file di configurazione, l'originale del gestore pacchetti e uno personalizzato modificato da me. Ho aggiunto alcuni commenti per descrivere il comportamento.
Come posso eseguire diff
i file di configurazione, saltando i commenti? Una riga commentata è definita da:
- spazi bianchi iniziali facoltativi (schede e spazi)
- cancelletto (
#
) - qualsiasi altro personaggio
L'espressione regolare (più semplice) sarebbe saltare il primo requisito #.*
. Ho provato l' opzione --ignore-matching-lines=RE
( -I RE
) di GNU diff 3.0, ma non sono riuscito a farlo funzionare con quella RE. Ho anche provato .*#.*
e .*\#.*
senza fortuna. Mettere letteralmente la linea ( Port 631
) in quanto RE
non corrisponde a nulla, né aiuta a mettere la RE tra le barre.
Come suggerito nel sapore di regex dello strumento "diff" sembra mancare? , Ho provato grep -G
:
grep -G '#.*' file
Questo sembra corrispondere ai commenti, ma non funziona diff -I '#.*' file1 file2
.
Quindi, come dovrebbe essere usata questa opzione? Come posso fare per diff
saltare alcune righe (nel mio caso, commenti)? Non suggerire di grep
inserire il file e di confrontare i file temporanei.
diff -I
non si comporta come mi aspettavo. Ho aggiornato la mia risposta con un esempio che ha chiarito questo comportamento per me.
-I
opzione fa sì che un blocco venga ignorato solo se tutte le sue linee corrispondono alla regexp. Quindi puoi ignorare una modifica di solo commento in quel modo, ma non le modifiche di commento che si avvicinano a una modifica di non commento.