проверьте и замените буквенно-цифровой шаблон с помощью sed - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть требование, когда необходимо проверить входное значение, чтобы оно соответствовало фиксированному шаблону, если нет, то закрепите его на шаблоне, используя sed.

В этом случае ТОЛЬКО должен быть конечный результатpattern env00XX, где XX - от 01 до 49

некоторые входные данные, которые я мог бы ожидать, ENV00XX, Env00XX, env1 env2 ... env9 или любые другие критерии необходимо сбросить с env0001 на env0049 (строчные env и 4цифры до 49)

Я пробовал много способов, самые близкие из которых sed -r ":r;s/\b[0-9]{1,3}\b/0&/g;tr" дает мне от 3 до 0003 и от 23 до 0023

также echo ENV001 | sed 'y/ENV/env/' | sed -e 's/00*//g' дает от ENV001 до env1

Но я не могу идти дальше.

1 Ответ

0 голосов
/ 24 ноября 2018

Попробуйте:

echo 'EnV009' | sed 's/env\([0-9]\{1,\}\)/env000\1/I;s/0*\([0-9]\{4\}\)/\1/'

Объяснение: Первое выражение sed s/\(env\)\([0-9]\{1,\}\)/env000\2/I ищет без учета регистра "env", за которым следует хотя бы одна цифра.Затем он заменяет сопоставленный текст на «env», за которым следуют три нуля, за которыми следует сопоставленный шаблон цифр (одна или несколько цифр).

EnV009 становится env000009

Второе выражение sed s/0*\([0-9]\{4\}\)/\1/ берет выходные данные первого и отсекает лишние нули до того, как последние четыре цифры.

env000009 становится env0009

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...