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

Эта задача — шаг 13 курса «sed: потоковый редактор»

sed: маскируй телефоны в логе поддержки

средне~7 мин

Лог поддержки /root/support.log уходит подрядчику, а в нём телефоны клиентов вида +7 912 345-67-89. Замаскируй в каждом номере все цифры, кроме двух последних, звёздочками — +7 *** ***-**-89 (код страны +7 оставь). В одной строке бывает два номера. Результат — в /root/support.masked.log.

Что потренируешь:
  • sed -E
  • группы захвата
  • счётчик {n}
  • маскирование данных
  • флаг g

Разбор темы

Маскирование — подстановка, где шаблон описывает структуру всего значения, а в скобки берётся только то, что надо сохранить: оно возвращается в замену обратной ссылкой, а остальное переписывается литералом. Точное число цифр задаётся счётчиком {n} — так шаблон не зацепит номер заказа или сумму. Символы, которые в регулярке что-то значат (здесь +), экранируют. Флаг g обрабатывает все совпадения в строке, а не только первое.

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

  1. номера скрыты
  2. маска верная, остальной текст на месте

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