Этот вопрос / ответ имеет несколько хороших решений для удаления идентичных строк в файле, но не будет работать в моем случае, так как в противном случае дублирующиеся строки имеют временную метку.
Можно ли сказать awk игнорировать первые 26 символов строки при определении дубликатов?
Пример:
[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
Станет
[Fri Oct 31 20:27:24 2014] The Brown Cow Jumped Over The Moon
(сохраняя самую последнюю временную метку)
Ответы:
Вы можете просто использовать
uniq
с его-f
опцией:От
man uniq
:На самом деле это будет отображать первую строку:
Если это проблема, вы можете сделать:
или если у вас нет,
tac
но вашиtail
поддержки-r
:источник
источник
Попробуй это:
источник
perl
Решение:источник
Можно использовать силу
vim
:Очень просто. Если у вас есть еще пара файлов (например, gzipped повернутые логи),
vim
вы откроете их без предварительной распаковки и можете повторить последнюю команду, нажав :и ↑. Как повторить последнюю команду в терминале.источник