Удаление символов, соответствующих шаблону

Bash:
Удаление символов, соответствующих шаблону

Как это сделать:

Удалить начальные и конечные пробелы:

text="   Привет, Мир!   "
trimmed=$(echo "$text" | xargs)
echo "$trimmed"

Вывод: Привет, Мир!

Удалить все цифры:

text="B4sh i5 amaz1ng!"
cleaned=${text//[^a-zA-Z ]/}
echo "$cleaned"

Вывод: Bsh i amazng

Заменить конкретные символы:

text="Привет-Мир!"
cleaned=${text//-/_}
echo "$cleaned"

Вывод: Привет_Мир!

Подробнее

В начале текстовые инструменты обработки, такие как sed и awk, были основными для манипуляций со строками. Bash с тех пор включил в себя сопоставление с образцом и манипуляцию строками непосредственно в саму оболочку, предоставив своим пользователям множество возможностей без необходимости использования внешних команд.

Синтаксис ${parameter/pattern/string} - это один из подходов, где вы заменяете первое совпадение pattern на string. Чтобы удалить все совпадения, просто добавьте еще один /, как показано в приведенных выше примерах.

Альтернативами являются использование классических инструментов UNIX, таких как sed, awk, tr, или более современных языков сценариев, таких как Python или Perl.

Под капотом Bash использует глобализацию и подстановочные знаки для сопоставления с образцом, но когда вы видите конструкции ${text//pattern/}, вы имеете дело с расширением параметров Bash — функцией, которая очень удобна для манипуляции со строками.

Смотрите также