2013-06-14 4 views
1

Я использую скрипт bash, чтобы вырезать некоторые строки из файла журнала. Основной формат этого файла журнала:Нужно быстро удалить частичные дубликаты из журнала

field1: value1, field2 = значение2, field3 = value3, Field4 = value4, value5, value6, Field5 = value7

Иногда будут строки в котором поле1: значение 1 идентично, но некоторые другие данные являются либо одинаковыми, либо разными. Я хотел бы отфильтровать эти строки, так что я только вычеркнул первый экземпляр всего, что имеет тот же кортеж «field1: value1».

Я бы предпочел красивую однострочную линию командной строки, если вы можете найти что-то особенно простое. Я определенно хочу сохранить его в сценарии bash. Это на linux, поэтому у нас есть все доступные инструменты командной строки.

Спасибо!

ответ

5

Использование awk:

awk -F, '!arr[$1]++ { print }' LOGFILE 

Программа awk использует массив, чтобы сохранить подсчет количества раз конкретный «поле1: value1` строка видно, но только печатает входящей линии в первый раз.

+0

Идеальное решение, работает в соответствии с запросом. Благодаря! – Dave

Смежные вопросы