Вот решение с расширением параметров оболочки, которое заменяет несколько смежных вхождений одним _
:
$ var=AxxBCyyyDEFzzLMN
$ echo "${var//+([xyz])/_}"
A_BC_DEF_LMN
Обратите внимание, что шаблон +(<em>pattern</em>)
требует расширенного сопоставления с шаблоном, включается с помощью
shopt -s extglob
В качестве альтернативы, с параметром -s
("сжатие") tr
:
$ tr -s xyz _ <<< "$var"
A_BC_DEF_LMN