Регулярное выражение для шаблона apikey - PullRequest
0 голосов
/ 05 апреля 2020

Я не специалист по регулярным выражениям и пробовал разные подходы, но не работал. Я пытаюсь найти появление определенного шаблона apikey в лог-файле.

[SOME TEXT]http_apikey=""abc123pq-ab33-ffef-979f-d78a3d27g84f[SOME TEXT]
[SOME TEXT]http_apikey=""abc1-23-pq-ab33-ffef-979f-d78a3d27g84f[SOME TEXT]
[SOME TEXT]http_apikey=""abc1-23-pq-ab33-ffef-979f-d78a3d27g84f[SOME TEXT]
[SOME TEXT]http_apikey=""abc1-23pq-ab33-ffef-979f-d78a-3d27-g84f[SOME TEXT]
[SOME TEXT]http_apikey=""abc123pq-ab33ffef-979fd78a-3d27g84f[SOME TEXT]
[SOME TEXT]http_apikey=""a7wLi3gPFon7VeBUdN7ZE8lQjofa22ie[SOME TEXT]

Я хочу найти все apikey, в которых есть один или несколько символов '-'; Я хочу выделить регулярное выражение через grep; Я попытался сначала найти «http_apikey. {0,40}», затем направить его и снова найти «-» в строке, но это очень медленно.

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Вы могли бы сделать шаблон немного более точным, указав c, используя класс символов [a-z0-9] вместо использования .

Используя grep, вы сопоставляете дефис между классами символов как минимум в 2 раза :

grep 'apikey=""[a-z0-9][a-z0-9]*-[a-z0-9][a-z0-9]*-[a-z0-9]' file

Regex demo

Если вы можете использовать egrep, вы можете повторить группу 2 или более раз {2,}, используя квантификатор:

egrep 'apikey=""[a-z0-9]+(-[a-z0-9]+){2,}' file

Regex demo

1 голос
/ 05 апреля 2020

Одиночный grep будет:

cat file|grep 'apikey=\"\".*[-].*'

или соответствовать только самому ключу:

cat file|grep -oP '(?<=apikey="").*[-].*(?=\[.+)'

Это то, что вы необходимость?

...