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