1

Я пытаюсь извлечь метку времени и числовую строку в URL, вызываемом в лог-файле apache, который выглядит следующим образом:

123.456.78.90 - - [16/Dec/2014:06:27:30 +0100] "GET /servlet/something.something=%2B2341231231234&subappid=hello&pass=hello&from=somebody&dlrreq=true&intflag=TRUE HTTP/1.1" 200 31 "-" "python-requests/2.5.0 CPython/2.7.3 Linux/2.6.32-431.el6.x86_64"

Пока что я могу использовать awk для извлечения метки времени и всего URL.

awk '{print $4,$5} {print $6}' /var/log/httpd/access_log

Пожалуйста, как я могу удалить только номер строки 2341231231234, чтобы только отметка времени и эта строка находились на одной строке?

1 ответ1

0

Предполагая, что все ваши строки имеют одинаковый формат для URL, вы можете получить временную метку и числовую строку с помощью команды sed например, такой:

$ sed -r 's|.*\[(.*)\].*=%(.*)&sub.*|\1 \2|g' /var/log/httpd/access_log
16/Dec/2014:06:27:30 +0100 2B2341231231234

Это выражение принимает все, что существует внутри [ и ] (должно быть меткой времени), и все, что существует между =% и &sub (должно быть числовой строкой).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .