Meu arquivo consiste no seguinte; aproximadamente:
username:username:username:username:username
A linha acima continua com cerca de 600 caracteres.
Eu uso o awk
comando para usá-lo como 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ário 'me seguindo', e a cada 24 horas aproximadamente, comparando a lista original no meu disco rígido com a lista de nome de usuário recém- gerada (e ecoando quem não está mais seguindo me . I terá para encapsular a minha lógica em um loop usando 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 gerar a diferença entre 2 arquivos?
bash
command-line
awk
output
Ben
fonte
fonte
diff
, certo?Respostas:
O utilitário que você está procurando é
diff
. Dê uma olhada no manual para obter detalhes.fonte
Dados dois arquivos contendo listas de usuários não ordenadas, por exemplo
e
para obter uma lista simples dos usuários,
file1
mas não o façafile2
, você pode fazere da mesma forma para atrair usuários,
file2
mas nãofile1
Se os arquivos da lista já estiverem classificados, eles poderão ser simplificados para
comm -23 file1 file2
ecomm -13 file1 file2
respectivamente.fonte
comm
sem classificar? Meu arquivo de texto tem valores como1
,2
,01
,02
,0000
,0001
,0002
, etc. Usandosort
vai de-espécie da ordem ...O melhor comando para visualizar a diferença no conteúdo dos arquivos seria
fonte
diff [options] from-file to-file
diff
compara o conteúdo dos dois arquivos de arquivo e arquivo. Você pode especificar a-i
opção que ignora as alterações caso; considere letras maiúsculas e minúsculas equivalentes.Para mais informações, consulte este link: http://www.computerhope.com/unix/udiff.htm ou consulte a página do manual.
fonte
você pode tentar as mesmas janelas como
fc
comando no Unix e Linux iediff <file_new> <file_old>
comando.A linha com
+++
ou---
na frente deles mudou e uma sem+'s
e-'s
não mudouLinhas com
-
sinal são removidas do novo arquivo, no entanto, elas existiam na versão antigaLinhas com
+
sinal são adicionadas em um novo arquivo, no entanto, não existiam na versão antiga do arquivoNotação Linux
O Linux usa
>
e<
>
significa a linha do arquivo antigo<
significa a linha do novo arquivo que é alterada no arquivo antigofonte
Vá para vimdiff em Mostrando diferenças entre duas, três ou quatro versões do mesmo arquivo.
fonte