grep фильтрация по столбцу
Модератор: Bizdelnick
-
- Сообщения: 103
grep фильтрация по столбцу
Здравствуйте, подскажите пж-та, есть лог nginx access.log, необходимо из данного лога отфильтровать все запросы с определенного ip-адреса (т.е. сделать grep по первому стобцу, содержащему искомый адрес). Пытаюсь так: cat host.access.log | awk '{print $1}' |grep 192.168.0.5
Но в итоге, естественно, выводится только первый столбец благодаря awk. Как можно отгрепать по первому столбцу, но сохраняя полностью вывод строки?
Но в итоге, естественно, выводится только первый столбец благодаря awk. Как можно отгрепать по первому столбцу, но сохраняя полностью вывод строки?
Re: grep фильтрация по столбцу
Так grep по умолчанию выведёт всю строку при совпадении в её содержимом. Хоть в первом, хоть в среднем или последнем столбце.
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: grep фильтрация по столбцу
grep '^192\.168\.0\.5 ' host.access.log
P.S. Учите регулярные выражения — пригодится.
P.S. Учите регулярные выражения — пригодится.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: grep фильтрация по столбцу
Регулярные выражения это как китайский язык, проще китайский с японским выучить чем разобраться в регулярных выражениях
Re: grep фильтрация по столбцу
Если нужно грепать не по первому столбцу, то там уже проще окать. Вот пример со вторым столбцом:safronowmax писал(а): ↑06.08.2018 12:50Как можно отгрепать по первому столбцу, но сохраняя полностью вывод строки?
Код: Выделить всё
awk '{if($2=="192\.168\.0\.5")print $0}' host.access.log
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
Re: grep фильтрация по столбцу
Начать можно с гугла или википедии. Но лучше отталкиваться от задачи. Регулярками можно сделать любой паттерн, поэтому сперва надо изучить как реализовать то, что требуется в данный момент для данной задачи.
Например, как уже показали выше, символ начала строки ^. Есть и символ конца строки.
Например, как уже показали выше, символ начала строки ^. Есть и символ конца строки.
Спасибо сказали:
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: grep фильтрация по столбцу
Джеффри Фридл, «Регулярные выражения». Книжка старая, но актуальности не утратила, разве что новомодный движок RE2 не описан. Найти PDF не проблема, и бумажный вариант в продаже до сих пор есть. Начинать с начала.
Upd. Оказывается, её недавно переиздали. Для первого знакомства будет вполне достаточно первых двух глав, которые есть в свободном доступе.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: grep фильтрация по столбцу
А он модный? Припоминаю, что в нем нет кучи нужных фич, которые поддерживаются даже sed.
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: grep фильтрация по столбцу
Это каких же? Вроде бы туда запихнули всё, что только можно реализовать на ДКА, и уж точно всё, что есть в POSIX extended. По сравнению с perl/pcre и подобными им — да, кое-чего нет, но они НКА.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: grep фильтрация по столбцу
'(?!)', '(?=)' и т.д. как минимум. Обратные ссылки.
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: grep фильтрация по столбцу
Всё правильно, в ДКА lookahead'ы и обратные ссылки невозможны. По этой причине их нет и в POSIX, в том числе в sed.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: grep фильтрация по столбцу
О, у меня есть такая точно книжка, те же обложка, совы, издательство и стиль, только автор Тони Стаблибайн, и чуть другое оглавление. Маленькая карманного формата. Это не то?
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: grep фильтрация по столбцу
Ну если есть, то должно быть несложно сравнить и понять. ☺
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: grep фильтрация по столбцу
Э... да мне-то, как пользователю, что с того? Google запилил библиотеку, он свою задачу решил, все быстро и идеологически правильно, но матчинг, в продуктах, которые ее используют, - менее удобный и не решает те задачи, которые позволяет решить PCRE.Bizdelnick писал: ↑06.08.2018 18:36Всё правильно, в ДКА lookahead'ы и обратные ссылки невозможны. По этой причине их нет и в POSIX, в том числе в sed.
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: grep фильтрация по столбцу
И, чего уж там, это не мешает им переступать через себя: https://github.com/google/re2/blob/master/re2/nfa.cc. А не реализовали они это лишь по причине того, что хотели, чтобы он работал "в 20 раз быстрее PCRE".
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: grep фильтрация по столбцу
serzh-z, ну не нравится — не пользуйся, в чём проблема? От этого движок (и его синтаксис, имеющий несколько других инкарнаций) новомодным быть не перестаёт.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: grep фильтрация по столбцу
serzh-z писал: ↑06.08.2018 19:08И, чего уж там, это не мешает им переступать через себя: https://github.com/google/re2/blob/master/re2/nfa.cc.
Похоже, не так уж сильно переступили. Но чтобы понять, что они имели в виду, надо убить немало времени…// This is an actual NFA like the theorists talk about,
// not the pseudo-NFA found in backtracking regexp implementations.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |