Как проверить, содержит ли строка подстроку в Bash
Как проверить, содержит ли строка подстроку в Bash
How to Check if a String Contains a Substring in Bash
В этой статье мы покажем вам несколько способов как проверить, содержит ли строка подстроку.

Одна из наиболее распространенных операций при работе со строками в 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
для тестирования.