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 diffnos 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 REnã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 diffpular certas linhas (no meu caso, comentários)? Por favor, não sugira grepo arquivo e compare os arquivos temporários.
diff -Inão se comporta como eu esperava. Atualizei minha resposta com um exemplo que esclareceu esse comportamento para mim.
-Iopçã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.