Как проверить, содержит ли строка подстроку в 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

Использование оператора 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 для тестирования.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Оставьте комментарий