#(see sample) $ cat x | perl -pe 'BEGIN{ print "TIME;...\n"; } s!(\S+) - (\S+) - \[(\d\d)/(\S\S\S)/(\S+):(\d\d):(\d\d:\d\d) \S+\] "(\S+) (.*/)(\S+)(?:\.([^?]*)(\?\S*)?) HTTP/\S+" (\d+) (\S+)!$3-$4-$5 $6:$7;$6;$2;$1;$8;$13;1;$14;$11;$10;$9;$12;!' > x.csv
Эта команда преобразует формат журнала доступа Apache Common Log Format (CLF) в формат CSV.
cat x | perl -pe 'BEGIN{ print "TIME;...\n"; } s!(\S+) - (\S+) - \[(\d\d)/(\S\S\S)/(\S+):(\d\d):(\d\d:\d\d) \S+\] "(\S+) (.*/)(\S+)(?:\.([^?]*)(\?\S*)?) HTTP/\S+" (\d+) (\S+)!$3-$4-$5 $6:$7;$6;$2;$1;$8;$13;1;$14;$11;$10;$9;$12;!' > x.csv
Пояснения:
— cat x
открывает файл x
и выводит его содержимое.
— perl -pe 'BEGIN{ print "TIME;...\n"; } ...'
использует Perl для обработки строк согласно указанному шаблону.
— Шаблон заменяет строки согласно регулярному выражению, приводя к преобразованию формата CLF в CSV.
— Результат выводится в файл x.csv
с помощью >
.
— Формат CSV будет содержать значения разделённые точкой с запятой, включая дату, время, метод запроса, URL и т.д.
Альтернативой может быть использование специализированных инструментов или скриптов для анализа и преобразования логов в нужный формат.