como comparar o arquivo total

0

Suponha que eu tenha 2 arquivos de configuração como: arquivo 1:

smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
virtual_gid_maps = static:5000

Arquivo 2:

virtual_gid_maps = static:5000
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes

se você ver com cuidado, verá que uma linha começa com virtua_gid_* , mas o arquivo 1 tem no final do arquivo, mas o arquivo 2 tem o cabeçalho do arquivo.

Suponha que eu tenha 2 arquivos com as mesmas linhas com posições diferentes, mas posições que não são importantes para mim, ser ou não ser são importantes.

COMO POSSO COMPARAR OS MEUS ARQUIVOS?

    
por PersianGulf 19.06.2013 / 16:04

3 respostas

6

Se as posições não são importantes, você pode classificar os arquivos e, em seguida, realizar um diff. Você terá que salvar os arquivos classificados na área temporária.

sort file1 > /tmp/file1
sort file2 > /tmp/file2
diff /tmp/file1 /tmp/file2

Você também pode tentar usar vimdiff em vez de diff .

    
por 19.06.2013 / 16:14
3

Se os arquivos tiverem apenas <name> = <value> linhas simples (como seu exemplo), você pode fazer algo assim:

$ cat file1 | sort > /tmp/sortedfile1
$ cat file2 | sort > /tmp/sortedfile2
$ diff /tmp/sortedfile1 /sortedfile2

Isso funcionará enquanto houver o mesmo número de espaços em torno de =

    
por 19.06.2013 / 16:16
3

Você pode evitar o uso de arquivos temporários se usar sub shells:

diff <(sort fileA) <(sort fileB)

Outro programa útil é o meld que é uma interface gráfica muito agradável para diff .

    
por 19.06.2013 / 16:24