Ignora tudo menos o texto ao comparar arquivos com o diff?

2

Para o comando diff , para comparação de arquivos, quais opções são necessárias para uma comparação de arquivos em que apenas o texto é comparado?

O que quero dizer é que quero ignorar todos os espaços, guias, novas linhas, etc.

Eu tenho tentado diferentes opções, mas não consegui alcançar o resultado desejado.

    
por Ares 16.08.2016 / 06:54

1 resposta

1

Você pode pré-processar os arquivos e comparar o fluxo. Por exemplo. use tr para excluir todos os espaços e novas linhas.

diff <( tr -d ' \n' <file1 ) <( tr -d ' \n' <file2)

Arquivos de exemplo são a e b que compartilham texto, mas não espaço e novas posições:

cat a
1
2
3

cat b
1 2 3

diff -sq a b
Files a and b differ

diff -sq <( tr -d ' \n' <a ) <( tr -d ' \n' <b )
Files /dev/fd/63 and /dev/fd/62 are identical

Note que

  1. Isso não será diferente entre these words e th esew ord s
  2. Você precisa prestar muita atenção em quais caracteres você está excluindo
  3. Os nomes dos arquivos de saída de diff são nomes de fluxo e não nomes de arquivo

Veja man tr para caracteres especiais, como guias etc. (talvez o [:space:] definido corresponda melhor às suas necessidades)

    
por 16.08.2016 / 15:31

Tags