Como posso produzir a diferença entre 2 arquivos?

11

Meu arquivo consiste no seguinte; aproximadamente:

username:username:username:username:username 

A linha acima continua com cerca de 600 caracteres.

Eu uso o comando awk para usá-lo como um argumento em uma solicitação de API / HTTP enviada da linha de comando.

Estou usando meu script para obter uma lista de contas de usuários seguindo-me e a cada 24 horas, comparando a lista original em meu disco rígido com a lista de nomes de usuário recém-saída (e echo'ing quem não está mais me seguindo . Vou ter que encapsular minha lógica em um loop usando o bash .. testando cada nome de usuário.

Meu script atual:

user=$(awk -F: '{ print $1 }' FILE)  # Grab $User to use as an argument.  
following=$(exec CURRENT_FOLLOWERS) # Outputs the new file

echo "X amount of users are following you on 78B066B87AF16A412556458AC85EFEF66155"  

          SAVE CURRENT FOLLOWERS TO NEW A FILE.  


if [[ DIFFERENCE IS DETECTED ]] ; then    

          echo -ne "$User NO LONGER FOLLOWING YOU\r"

   else echo -ne "This user is following you still.\r"
fi

Minha pergunta é:
Como posso produzir a diferença entre dois arquivos?

    
por Ben 15.07.2014 / 13:23

6 respostas

9

O utilitário que você está procurando é diff . Dê uma olhada no manual para mais detalhes.

    
por 15.07.2014 / 15:11
13

Dados dois arquivos que contêm listas não ordenadas de usuários, por exemplo,

In file1:
    userD
    user3
    userA
    user1
    userB

e

In file2:
    user3
    userB
    userX
    user1

para obter uma lista simples dos usuários em file1 , mas não em file2 , você pode fazer

$ comm -23 <(sort file1) <(sort file2)
userA
userD

e de forma semelhante para obter os usuários em file2 , mas não em file1

$ comm -13 <(sort file1) <(sort file2)
userX

Se os arquivos da lista já estiverem classificados, eles podem ser simplificados para comm -23 file1 file2 e comm -13 file1 file2 , respectivamente.

    
por 15.07.2014 / 16:48
4

O melhor comando para ver a diferença no conteúdo dos arquivos seria

vim -d file1 file2
    
por 01.04.2015 / 11:27
3

diff [options] from-file to-file

diff compara o conteúdo dos dois arquivos from-file e to-file. Você pode especificar a opção -i que ignora as alterações no caso; considerar letras maiúsculas e minúsculas equivalentes.

Para mais informações você pode consultar este link: link ou você pode dar uma olhada na página de manual.

    
por 15.07.2014 / 15:17
2

você pode tentar as mesmas janelas como o comando fc no Unix e no Linux, por exemplo, diff <file_new> <file_old> command.

A linha com +++ ou --- na frente deles mudou e uma sem +'s e -'s não mudou

As linhas com - sign são removidas do novo arquivo, no entanto, elas existiam na versão antiga

Linhas com + são adicionadas no novo arquivo, mas não existiam na versão antiga do arquivo

Notação do Linux

O Linux usa > e <

> significa a linha do arquivo antigo < significa a linha do novo arquivo que é alterado no arquivo antigo

    
por 06.02.2016 / 08:32
0

Ir para vimdiff para Mostrar diferenças entre dois, três ou quatro versões do mesmo arquivo.

    
por 15.07.2014 / 15:40