Это мой автоматически сгенерированный лог-файл (непрерывная минутная проверка моей интернет-линии):
$ cat log.csv
2018-04-27,23:37,OK
2018-04-27,23:38,OK
2018-04-27,23:39,OK
2018-04-27,23:40,ERROR
2018-04-27,23:41,ERROR
2018-04-27,23:42,OK
2018-04-27,23:43,OK
2018-04-27,23:44,OK
2018-04-27,23:45,OK
Я пытаюсь сделать его более удобным для чтения с помощью сценариев некоторого метода интерпретации, который зависит от состояния 3-го поля (состояние строки: ОК / ОШИБКА), а удаляет последовательные значения , своего рода сценарий оболочки, который показывает только начальное значение и изменение состояния для интернет-линии, преобразуя вышеприведенный журнал в:
2018-04-27,23:37,OK
2018-04-27,23:40,ERROR
2018-04-27,23:42,OK
Это будет означать:
2018-04-27,23:37,Entered Status OK
2018-04-27,23:40,Entered Status ERROR
2018-04-27,23:42,Entered Status OK
Как видно, оставление только изменений состояния делает отображение журнала короче и легче для чтения.
Предполагая, что файл журнала может быть очень длинным (рассмотрим месяцы записи в одну минуту), что может быть правильным (эффективным) методом для написания этой «интерпретации» в оболочке Linux ?
Я знаю, что итерации не считаются очень хорошей идеей для оболочек, поэтому я думал о AWK
, но я не очень разбираюсь в этом.
Конечно, решения Loops могут быть лучше, чем ничего.
Дополнительные данные :
- Подобный (но не тот же самый) вопрос (тоже заданный мной) здесь .