В настоящее время я запускаю сценарий awk для обработки большого (8,1 ГБ) файла журнала доступа, и его завершение занимает вечность. Через 20 минут он записал 14 МБ из (1000 + - 500) МБ. Я ожидаю, что он напишет, и мне интересно, смогу ли я как-то обработать его намного быстрее.
Вот скрипт awk:
#!/bin/bash
awk '{t=$4" "$5; gsub("[\[\]\/]"," ",t); sub(":"," ",t);printf("%s,",$1);system("date -d \""t"\" +%s");}' $1
РЕДАКТИРОВАТЬ:
Для неопытных сценарий читает каждую строку, получает информацию о дате, изменяет ее в формат, который утилита date
распознает, и вызывает ее для представления даты в виде количества секунд с 1970 года, наконец возвращая ее строка файла .csv вместе с IP.
Пример ввода: 189.5.56.113 - - [22 / Jan / 2010: 05: 54: 55 +0100] "GET (...)"
Возвращаемый результат: 189.5.56.113,124237889