Одна из наиболее распространенных операций при работе со строками в 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
Использование оператора Regex
Другой способ определить, встречается ли указанная подстрока в строке, — использовать оператор регулярного выражения =~
. Когда используется этот оператор, правая строка рассматривается как регулярное выражение.
Точка, за которой следует звездочка .*
Соответствует нулю или более вхождений любого символа, кроме символа новой строки.
#!/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
для тестирования.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.