Подстроки в 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} # Вывод: value
Bash может заменять части строки другим значением.
string="SocketDaddy Substring Guide" echo ${string/Substring/Tutorial} # Вывод: SocketDaddy Tutorial Guide
string="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, где будет еще больше полезной информации.