grep с регулярным выражением - PullRequest
0 голосов
/ 10 марта 2020

0

Я сделал свое регулярное выражение, и оно отлично работает на моем инструменте создания регулярных выражений. Но когда я пытаюсь использовать свое регулярное выражение в командной строке, оно не работает, или, по крайней мере, кажется, что я не могу его использовать.

мое регулярное выражение:

.*\[(GET|POST|OPTIONS|PUT|DELETE)\].*

соответствует Вызовите метод независимо от того, где он находится. Я хочу, чтобы он отображался в простом файле, содержащем все вызовы.

Я перепробовал много команд, одна из которых:

cat myfile.txt |  awk /'\[(GET|POST|OPTIONS|PUT|DELETE)\]/ {print $1}'

, но он возвращает меня первый столбец, хотя подходящей группой является метод.

Кто-нибудь может мне помочь, пожалуйста?

Я могу привести пример, если это необходимо.

примеры:

два возможных входа:

32.45.53.01, 32.32.32.543, 21.32.54.675, 21.32.54.779 161.21.34.56 [10 / Mar / 2020: 13: 04: 14 +0100] [ HTTP / 1.1] [GET] [-: //yahoo.com/webapp/wcs/stores/servlet/libero/home] 302 - EL = [22ms, -] WAS = [mediaworld_b2 c: 3213] - WAS = [-] - - [спам]

10.40.23.483 10.8.21.321 [10 / Mar / 2020: 15: 18: 06 +0100] [HTTP / 1.1] [GET] [-: // google- preprod.test.com/sda/v1/ticrcv/TSY-JKidsahjsdaAO-A-JYVS5gGFxZ8PY8J-GRs0g-GOB2C] 200 108 EL = [17ms, -] WAS = [-] - -

, и выход в обоих случаях должен быть просто:

GET

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Не уверен, что я хорошо понимаю, но вы этого хотите?

grep -oE '\[(GET|POST|OPTIONS|PUT|DELETE)\]' myfile.txt
0 голосов
/ 10 марта 2020

Ответ от Тото, кажется, соответствует вашим потребностям. Таким образом, для информации, в awk $1 ссылается на первое поле ввода в строке (как указывал dawg), и обратные ссылки не поддерживаются. Однако, если у вас GNU awk, вы можете использовать функцию match, которая поддерживает дополнительный параметр для сохранения снимков следующим образом:

awk 'match($0, /\[(GET|POST|OPTIONS|PUT|DELETE)\]/, a) { print a[1] }' myfile.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...