REGEX поиск и замена HTTP RC в журналах - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть файл журнала с HTTP и другими кодами возврата.Пробел между числовым кодом возврата и текстом, описывающим RC, вызывает у меня проблемы с нормализацией этих данных для разбора.Вот несколько примеров данных: rc (200 OK) rc (403 Unauthorized) rc ()

Я хочу сохранить как числовой RC, так и текст RC, и я хочу изменить пробел на тире (-).Поэтому, учитывая приведенные выше данные, я хочу следующее:
rc (200-OK) rc (403-Unauthorized) rc ()

Я думаю, что этот шаблон соответствия работает: rc (\ d {3} \ sно я до смерти устал от седа и жалуюсь на все, что я пытаюсь: (

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

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Вы можете захватить rc(, за которым следуют 3 цифры [0-9]{3} в группе захвата с последующим совпадением одного или нескольких раз с пробельным символом \s+.

Затем замените эту группу захвата, за которой следует -.Используйте глобальные /g для замены всех вхождений.

$ echo "rc(200 OK) rc(403 Unauthorized) rc()" | sed -E 's/(rc\([0-9]{3})\s+/\1-/g'
rc(200-OK) rc(403-Unauthorized) rc()

Соответствие (rc\([0-9]{3})\s+

Замена \1-

Демо http://rextester.com/VQKA81573

0 голосов
/ 21 сентября 2018

Это, кажется, делает трюк.Он работает путем захвата групп по обе стороны от места, которое вы хотите заменить, а затем помещает их обратно, но вместо тире.

$ sed -E 's/(rc\([0-9]+)(\s+?)([a-zA-Z0-9]+?\))/\1-\3/g' x.log
rc(200-OK) rc(403-Unauthorized) rc()
$ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...