Comment savoir ce qu'il y a dans un fichier et ce qui ne l'est pas dans un autre?

0

Je fais un nrpe vérifier pour mon nagios sur les fichiers que je sauvegarde, envoi à Amazon S3. J'ai deux fichiers alors, s3, qui répertorie tous mes fichiers déjà présents sur Amazon. Et local qui liste tous mes fichiers dans ma machine. J'ai besoin de savoir ce qu'il y a dedans local et non est en s3. Exemple:

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

local

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

Remarquerez que 72ede57455eb850c8f078a88fb9f5900 /company-logs/file.4.gz n'est pas dans s3 fichier. Et c'est ce qui devrait me revenir, comment puis-je faire cela?

Je vous remercie!

Valter Silva
la source

Réponses:

2

Un one liner:

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

Fondamentalement, il compare la sortie de awk, que nous utiliserons pour imprimer la quatrième et la première colonne des fichiers, respectivement. Nous devons trier la sortie au cas où les hachages sont dans des ordres différents. le <(…) la syntaxe est la substitution de processus et nous permet d’exécuter diff sur la sortie de deux commandes, alors qu’il ne vous permet généralement que de travailler avec des fichiers.

Il produit:

<
---
> 72ede57455eb850c8f078a88fb9f5900

Donc vous saurez 72ede57455eb850c8f078a88fb9f5900 est uniquement dans le "bon" fichier, c'est-à-dire local.

slhck
la source
C'est un peu lisse awk la magie. :)
Justin Pearce
1
Heh, merci. Ça bat cut dans les cas où plusieurs espaces et non des tabulations (ou d'autres délimiteurs simples) sont utilisés pour séparer les colonnes (au moins en termes de lisibilité).
slhck