O utilitário que você está procurando é diff
. Dê uma olhada no manual para mais detalhes.
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?
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.
O melhor comando para ver a diferença no conteúdo dos arquivos seria
vim -d file1 file2
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.
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
Ir para vimdiff para Mostrar diferenças entre dois, três ou quatro versões do mesmo arquivo.
Tags command-line bash output awk