
Одной из наиболее распространенных операций при работе со строками в Bash является определение того, содержит ли строка другую строку.
В этой статье мы покажем вам несколько способов проверки наличия в строке подстроки.
Использование подстановочных знаков
Самый простой подход — заключить подстроку в подстановочные символы (звёздочка) * ) и сравнить её со строкой. Подстановочный знак — это символ, используемый для обозначения нуля, одного или нескольких символов.
Если тест возвращает true , подстрока содержится в строке.
В примере ниже мы используем оператор if и оператор равенства ( == ), чтобы проверить, найдена ли подстрока SUB в строке STR :
#!/bin/bash STR = 'GNU/Linux is an operating system' SUB = 'Linux' if [[ " $STR " == * " $SUB " * ]] ; then echo "It's there." fi
После выполнения скрипт выведет:
It's there.
Использование оператора case
Вместо использования оператора if вы также можете использовать оператор case , чтобы проверить, содержит ли строка другую строку.
#!/bin/bash STR = 'GNU/Linux is an operating system' SUB = 'Linux' case $STR in * " $SUB " * ) echo -n "It's there." ;; esac
Использование оператора регулярного выражения
Другой способ определить, присутствует ли заданная подстрока в строке, — использовать оператор регулярного выражения =~ . При использовании этого оператора правая строка рассматривается как регулярное выражение.
Точка, за которой следует звездочка .* соответствует нулю или более вхождений любого символа, кроме символа новой строки.
#!/bin/bash STR = 'GNU/Linux is an operating system' SUB = 'Linux' if [[ " $STR " = ~ .* " $SUB " .* ]] ; then echo "It's there." fi
Скрипт отобразит следующее:
It's there.
Использование Grep
Команду grep также можно использовать для поиска строк в другой строке.
В следующем примере мы передаём строку $STR в качестве входных данных команде grep и проверяем, найдена ли в ней строка $SUB . Команда вернёт значение true или false в зависимости от ситуации.
#!/bin/bash STR = 'GNU/Linux is an operating system' SUB = 'Linux' if grep -q " $SUB " <<< " $STR " ; then echo "It's there" fi
Опция -q заставляет grep молчать и не выводить информацию.
Заключение
Проверка наличия в строке подстроки — одна из самых основных и часто используемых операций в скриптах Bash.
После прочтения этого руководства вы должны хорошо понимать, как проверить, содержит ли строка другую строку. Вы также можете использовать другие команды, например, awk или sed для проверки.
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства