Практическое задание

Эта задача — шаг 31 курса «Регулярные выражения»

Вытащи значение, не забрав ключ

средне~5 мин

В /var/log/api.log часть строк содержит поле token=<значение>. Собери только значения токенов (без token=), по одному в строке, в /root/tokens.txt. Строк без токена в результате быть не должно.

Что потренируешь:
  • grep -P
  • PCRE
  • lookbehind
  • (?<=...)
  • grep -o

Разбор темы

Проверки нулевой ширины (lookaround) задают контекст совпадения, не потребляя его: (?<=X) требует X слева, (?=X) — X справа, (?<!X)/(?!X) — отрицания. В связке с grep -o, который печатает только совпавшую часть, это позволяет извлекать значение без окружающего ключа и без постобработки. Lookaround доступен в PCRE-режиме grep -P; базовый и расширенный POSIX-синтаксис (grep, grep -E) его не поддерживает.

Что проверяется

  1. в файле все значения токенов
  2. лишних строк нет
  3. ключ token= не попал в вывод

Как это выглядит