Регулярные выражения для Linux - просмотрите журнал доступа Apache HTTPD на наличие всего кода ответа, кроме 200 - PullRequest
1 голос
/ 02 июля 2010

Это вопрос о grep и регулярном выражении.

Если я хочу увидеть все запросы с ответом 200, я могу сделать:.

Но что, если я хочу получить все запросы, ответ которых НЕ является кодом 200?Я хотел бы быть в состоянии сделать это только с одной инструкцией grep.Это возможно?

Спасибо, Дэн

Ответы [ 2 ]

2 голосов
/ 02 июля 2010

Вы можете просто использовать опцию -v для grep. Это инвертирует совпадения и возвращает все строки, которые не соответствуют шаблону.

Так вот так:

grep -v [pattern] [file]
1 голос
/ 02 июля 2010

Я бы использовал это:

^\S+\s+\S+\s+\S+\s+\[[^]]+\]\s+"(?:GET|POST|HEAD) [^ ?"]+\??[^ ?"]+? HTTP/[0-9.]+"\s+200

и затем инвертировал бы результат, как предложил Даниэль Эгеберг.

С комментариями и группами захвата, любезно предоставлено RegexBuddy :

^((?#client IP or domain name)\S+)\s+((?#basic authentication)\S+\s+\S+)\s+\[((?#date and time)[^]]+)\]\s+"(?:GET|POST|HEAD) ((?#file)[^ ?"]+)\??((?#parameters)[^ ?"]+)? HTTP/[0-9.]+"\s+(?#status code)200
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...