Eu tenho dois arquivos de configuração, o original do gerenciador de pacotes e o personalizado modificado por mim. Adicionei alguns comentários para descrever o comportamento.
Como posso executar diff
nos arquivos de configuração, pulando os comentários? Uma linha comentada é definida por:
- espaço em branco à esquerda opcional (guias e espaços)
- sinal de hash (
#
) - qualquer outro personagem
A expressão regular (mais simples) pulando o primeiro requisito seria #.*
. Tentei a opção --ignore-matching-lines=RE
( -I RE
) do GNU diff 3.0, mas não consegui fazê-lo funcionar com esse RE. Eu também tentei .*#.*
e .*\#.*
sem sorte. Colocar literalmente a linha ( Port 631
) como RE
não corresponde a nada, nem ajuda a colocar o ER entre barras.
Como sugerido no sabor da regex da ferramenta “diff”, parece estar faltando? , Tentei grep -G
:
grep -G '#.*' file
Isso parece coincidir com os comentários, mas não funciona diff -I '#.*' file1 file2
.
Então, como essa opção deve ser usada? Como posso fazer diff
pular certas linhas (no meu caso, comentários)? Por favor, não sugira grep
o arquivo e compare os arquivos temporários.
diff -I
não se comporta como eu esperava. Atualizei minha resposta com um exemplo que esclareceu esse comportamento para mim.
-I
opção faz com que um bloco seja ignorado apenas se todas as suas linhas corresponderem à regexp. Portanto, você pode ignorar uma alteração somente de comentário dessa maneira, mas não as alterações de comentários que estão próximas de uma alteração sem comentários.