Come sapere cosa c'è in un file e cosa non lo è in un altro?


0

Io faccio un nrpe controlla il mio nagios sui file che eseguo il backup, inviando a Amazon S3. Ho due file quindi, s3, che elenca tutti i miei file che sono già in Amazon. E local che elenca tutti i miei file nella mia macchina. Ho bisogno di sapere cosa c'è dentro local e non è dentro s3. Esempio:

s3

2013-07-01 04:49       145   32ddd73694ab610c3f077a88fb9f3300  s3://company-backup/company-logs/file.1.gz
2013-07-01 04:57       145   68adf73694ab610c3f077a88fb9f3300  s3://company-backup/company-logs/file.2.gz
2013-07-01 05:12       145   36ede43644ab710c8f077a88fb9f3300  s3://company-backup/company-logs/file.3.gz

Locale

32ddd73694ab610c3f077a88fb9f3300  /company-logs/file.1.gz
68adf73694ab610c3f077a88fb9f3300  /company-logs/file.2.gz
36ede43644ab710c8f077a88fb9f3300  /company-logs/file.3.gz
72ede57455eb850c8f078a88fb9f5900  /company-logs/file.4.gz

Notare che 72ede57455eb850c8f078a88fb9f5900 /company-logs/file.4.gz non è in s3 file. E questo è quello che dovrebbe tornare da me, come posso farlo?

Grazie!

Risposte:


2

Un solo rivestimento:

diff <(awk '{print $4}' s3 | sort) <(awk '{print $1}' local | sort)

Fondamentalmente, ciò che fa è confrontare l'output di awk, che useremo per stampare rispettivamente la quarta e la prima colonna dei file. Abbiamo bisogno di ordinare l'output nel caso in cui gli hash siano in ordini diversi. Il <(…) la sintassi è la sostituzione del processo e ci consente di eseguire diff sull'output di due comandi, mentre di solito ti consente solo di lavorare con i file.

Emette:

<
---
> 72ede57455eb850c8f078a88fb9f5900

Quindi lo saprai 72ede57455eb850c8f078a88fb9f5900 è solo nel file "giusto", ad es. local.


È un po 'scivoloso awk Magia. :)
Justin Pearce

1
Heh, grazie. Batte cut in quei casi in cui più spazi e non tab (o altri delimitatori singoli) vengono utilizzati per separare le colonne (almeno in termini di leggibilità).
slhck
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.