Как проверить, содержит ли строка подстроку в Bash

How to Check if a String Contains a Substring in Bash

25 Апреля 2020 | Терминал

В этой статье мы покажем вам несколько способов как проверить, содержит ли строка подстроку.

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


    Комментарии

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

Загрузка комментариев...