SED: шаблон шестнадцатеричных значений не соответствует - PullRequest
0 голосов
/ 05 октября 2019

Описание проблемы

В краткосрочной перспективе я застрял на использовании десятичных значений в регулярном выражении sed: со значениями ASCII и десятичными значениями это работает, с шестнадцатеричными - нет.

Я хочу заменить такие случаи, как Eab и Eba на дефис в строке "ncqiEagnwhpqhEabgEabEBAgneungwEba".

(немного фона I 'я пытаюсь написать сценарий, который удаляет конфигурационный файл Cisco> с дублированными комментариями, начинающимися с "!", но я не буду> давать полную историю, на данный момент я был бы рад решить эту> проблему)

Что я сделал

Я протестировал свой скрипт sed с использованием фактических значений ASCII, затем заменил его на десятичные коды и затем перешел на шестнадцатеричное.

root@server# sed --version
sed (GNU sed) 4.2.2

Это работает

root@server#echo "ncqiEagnwhpqhEabgEabEBAgneungwEba" | sed -e "s/E[ab]\{1,2\}/-/g"
ncqi-gnwhpqh-g-EBAgneungw-

Это также работает

root@server#echo "ncqiEagnwhpqhEabgEabEBAgneungwEba" | sed -e "s/\d69[\d97\d98]\{1,2\}/-/g"
ncqi-gnwhpqh-g-EBAgneungw-

Это не работает

root@server#echo "ncqiEagnwhpqhEabgEabEBAgneungwEba" | sed -e "s/\x45[\x61\x62]\{1,2\}/-/g"
ncqiEagnwhpqhEabgEabEBAgneungwEba

Ожидаемые результаты

При использовании десятичных значений я ожидаютот же результат попыток с фактическими значениями ASCIIи их десятичное представление.

Кто не прав? Я или седь? И где? Если бы кто-нибудь мог объяснить, где я здесь скучаю, я был бы очень благодарен.

...