Подстроки в Bash: извлечение и обработка
Bash предоставляет встроенные методы для извлечения и обработки подстрок, что упрощает обработку строк без использования внешних инструментов.
В этой статье расскажу о синтаксисе ${variable:offset:length} для извлечения подстрок и рассмотрим расширенные методы манипулирования строками.
Извлечение подстрок с помощью${variable:offset:length}
Синтаксис ${variable:offset:length}— это простой и эффективный способ извлечения части строки.
${variable:offset:length}variable: Строковая переменная.offset: Начальная позиция подстроки (индекс, начинающийся с 0).length: Количество извлекаемых символов.
Пример 1: Базовое извлечение подстроки
string="Hello, World!"
echo ${string:7:5} # Вывод: WorldПример 2: Извлечение из фиксированного положения
string="Welcome to Bash scripting"
echo ${string:11} # Вывод: Bash scriptingПример 3: Использование отрицательных индексов
Отрицательные индексы подсчитывают символы с конца строки.
string="Bash Substring Example"
echo ${string: -7:7} # Вывод: ExampleТакой синтаксис устраняет необходимость во внешних инструментах, таких как cutили awkдля большинства простых задач.
Расширенная обработка подстрок
Bash предоставляет несколько методов для манипуляции строками за пределами базового извлечения. Эти методы могут использоваться для удаления префиксов, замены подстрок или выполнения других изменений непосредственно в скриптах.
Удаление префикса или суффикса
Чтобы удалить известный префикс из строки:
string="prefix_value"
echo ${string#prefix_} # Вывод: valueЧтобы удалить известный суффикс из строки:
string="value_suffix"
echo ${string%suffix} # Вывод: valueBash может заменять части строки другим значением.
string="SocketDaddy Substring Guide"
echo ${string/Substring/Tutorial} # Вывод: SocketDaddy Tutorial Guidestring="abc abc abc"
echo ${string//abc/xyz} # Вывод: xyz xyz xyzИспользование регулярных выражений с[[ ]]
Вы можете извлечь подстроки, соответствующие определенному шаблону, используя регулярные выражения внутри [[ ]].
Пример: извлечение номера версии:
string="Version 1.2.3"
if [[ $string =~ ([0-9]+\.[0-9]+\.[0-9]+) ]]; then
echo "Matched version: ${BASH_REMATCH[1]}" # Вывод: 1.2.3
fiНа этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.