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