У меня есть каталог (/home/myuser/logs
), который содержит следующие файлы журналов за последние 5 дней:Bash/Python/Perl магии, чтобы получить агрегированные DateTimes через несколько файлов журнала
applogs_20130402.txt
applogs_20130401.txt
applogs_20130331.txt
applogs_20130330.txt
Каждая строка каждого «applog» имеет ту же структуру, просто разные данные:
<timestamp> | <fruit> | <color> | <cost>
Так, например, applogs_20130402.txt
может выглядеть так:
23:41:25 | apple | red | 53
23:41:26 | kiwi | brown | 12
23:41:29 | banana | yellow | 1023
... (etc., every line is pipe delimited like this)
Я хочу создать один «главный журнал», который объединяет все записи журнала (структурированные, линии с разделителями строк) из всех 5 файлов журнала в один файл, где хронологически упорядочены все временные метки. Кроме того, мне нужна дата, отраженная на отметках времени.
Так, например, если applogs_20130402.txt
и applogs_20130401.txt
были единственными 2 applogs в каталоге, и они оба смотрели, как это соответственно:
applogs_20130402.txt:
=====================
23:41:25 | apple | red | 53
23:41:26 | kiwi | brown | 12
23:41:29 | banana | yellow | 1023
applogs_20130401.txt:
=====================
23:40:33 | blueberry | blue | 4
23:41:28 | apple | green | 81
23:45:49 | plumb | purple | 284
Затем я хочу masterlog.txt
файл, который выглядит следующим образом:
2013-04-01 23:40:33 | blueberry | blue | 4
2013-04-01 23:41:28 | apple | green | 81
2013-04-01 23:45:49 | plumb | purple | 284
2013-04-02 23:41:25 | apple | red | 53
2013-04-02 23:41:26 | kiwi | brown | 12
2013-04-02 23:41:29 | banana | yellow | 1023
Я нахожусь на Ubuntu и имею доступ к Bash, python и perl и не имею предпочтения, какое решение используется. Обычно я бы попробовал «лучшую попытку» и опубликовал его, но я никогда не занимался объединением данных, подобных этому в Linux. Очевидно, что журналы являются тысячами строк по размеру, в отличие от моего примера выше. Так что делать все вручную не вариант ;-) Спасибо заранее!
Почему downvote? – IAmYourFaja
Кажется, достаточно легко с некоторыми командами командной строки, но что вы пробовали? Я не голосовал, но я бы сказал, это потому, что вы не прилагаете никаких усилий. – squiguy
Не имеет значения, находитесь ли вы в Windows или Linux. Я не был нисходящим, но я думаю, что немного больше усилий, помимо описания проблемы, не повредит. – simbabque