Cette question / réponse a de bonnes solutions pour supprimer des lignes identiques dans un fichier, mais ne fonctionnera pas dans mon cas car les lignes en double ont un horodatage.
Est-il possible de dire à awk d'ignorer les 26 premiers caractères d'une ligne pour déterminer les doublons?
Exemple:
[Fri Oct 31 20:27:05 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:10 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:13 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:16 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:21 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:22 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:23 2014] The Brown Cow Jumped Over The Moon
[Fri Oct 31 20:27:24 2014] The Brown Cow Jumped Over The Moon
Deviendrait
[Fri Oct 31 20:27:24 2014] The Brown Cow Jumped Over The Moon
(en conservant l'horodatage le plus récent)
text-processing
awk
duplicate
deduplication
un codeur
la source
la source
Réponses:
Vous pouvez simplement utiliser
uniq
avec son-f
option:De
man uniq
:En fait, cela affichera la première ligne:
Si c'est un problème, vous pouvez faire:
ou si vous n'en avez pas
tac
mais vostail
supports-r
:la source
la source
Essaye celui-là:
la source
Une
perl
solution:la source
On peut utiliser la puissance de
vim
:Très facile. Si vous avez quelques fichiers supplémentaires (tels que des journaux pivotés gzippés ), vous les ouvrirez
vim
sans aucune décompression préalable de votre côté et vous pouvez répéter la dernière commande en appuyant sur :et ↑. Tout comme la répétition de la dernière commande dans le terminal.la source