O GNU diff tem dois tipos de maneiras de ignorar as mudanças. Existem opções para ignorar certos tipos de diferenças, como espaços em branco ou maiúsculas e minúsculas, mas estas estão limitadas a algumas predefinições. E há uma opção para ignorar linhas que correspondam a determinados padrões, mas isso só permite ignorar linhas, não ignorar certas alterações nas linhas. Ignorar alterações de espaço em branco ( diff -w
) pode ajudá-lo, caso as colunas sejam formatadas em larguras diferentes, mas, para ignorar alguns números, você precisa de algo mais.
A maneira usual de ignorar certas diferenças é pré-processar os dois arquivos para remover ou canonizar as partes que você deseja ignorar. Por exemplo, se você deseja ignorar as colunas used / available / percentage, supondo que seus nomes de volume e pontos de montagem não contenham espaço em branco, você pode usar
awk '{print $1, $2, $6}'
como o pré-processador. Você também pode querer classificar os arquivos, a menos que você já esteja fazendo isso, porque a diferença na ordem de enumeração de df
não é significativa. Em um shell com substituição de processo (ksh, bash, zsh):
diff <(<./prechecks/file awk '{print $1, $2, $6}' | sort) \
<(<./postchecks/file awk '{print $1, $2, $6}' | sort)
Se você estava fazendo isso com muitos arquivos, em vez de usar diff -rs
, crie seu próprio loop para chamar o diff em arquivos individualmente.