>_ IzzyLab

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

Замаскируй карты

средне

В /root/payments.txt номера карт вида 1234 5678 9012 3456. Замаскируй все цифры, кроме последних четырёх, символом * (например **** **** **** 3456), результат — в /root/masked.txt.

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

Разбор темы

Маскирование части строки с сохранением остального — про группы захвата в sed -E. Чтобы заменить только нужный кусок, слева описывают структуру ВСЕЙ карты целиком (четыре группы по четыре цифры), но в круглые скобки оборачивают лишь тот фрагмент, который надо сохранить, — потом его возвращают в замену через обратную ссылку \1. «Ровно четыре цифры» задаётся квантификатором-счётчиком {4}, а не +, иначе шаблон поймает группы другой длины. Это общий приём: захватить сохраняемое, а маскируемое просто переписать литералом.

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

  1. Номер замаскирован
  2. Первые цифры скрыты

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