не может использовать фильтр на grep для поиска всего пути, включая строку - PullRequest
0 голосов
/ 25 февраля 2020

У меня проблема с использованием grep с регулярным выражением. Я пытаюсь прочитать и отфильтровать некоторые журналы на сервере

kubectl logs -lname=ambassador --tail=40 | grep ACCESS | grep '" 200 ' | grep ' /api/entitlements '

, поэтому это возвращает некоторые журналы, и это нормально, но мне нужно найти все API включая права на их пути. Я пробовал это:

kubectl logs -lname=ambassador --tail=40 | grep ACCESS | grep '" 200 ' | grep ' *entitlements* '

но ничего не возвращается

кто-нибудь может помочь?

Ответы [ 3 ]

2 голосов
/ 25 февраля 2020

Вы можете использовать awk, чтобы избежать нескольких команд grep и выполнить все фильтры в одной команде:

kubectl logs -lname=ambassador --tail=40 | awk '/ACCESS/ && /" 200 / && /entitlements/'

/substr/ ищет шаблон регулярного выражения substr в каждой строке awk , && гарантирует, что все заданные шаблоны находятся в одной строке.

1 голос
/ 26 февраля 2020

Не могли бы вы попробовать следующее:

kubectl logs -lname=ambassador --tail=40 | grep -E 'ACCESS.*entitlements.*" 200 '

grep ищет строку, содержащую подстроки ACCESS, entitlements и " 200 в этом порядке.

1 голос
/ 25 февраля 2020

Вы можете попробовать команду ниже для поиска нескольких ключевых слов -

kubectl logs -lname=ambassador --tail=40 |grep "entitlements\|ACCESS\| 200"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...