Поиск по сайту:
То, что мы знаем, — ограниченно, а то, чего мы не знаем, — бесконечно (П. Лаплас).

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

20.07.2019
Как создать псевдонимы Bash

Одна из самых распространенных операций при работе со строками в Bash – определить, содержит ли строка другую строку.

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

 

Самый простой подход заключается в том, чтобы окружить подстроку подстановочными символами звездочки (звездочкой) * и сравнить ее со строкой. Подстановочный знак – это символ, используемый для обозначения нуля, одного или нескольких символов.

Если тест возвращается true, подстрока содержится в строке.

В приведенном ниже примере мы используем оператор if и оператор равенства ( ==), чтобы проверить SUB, найдена ли подстрока в строке STR:

#!/bin/bash

STR='GNU/Linux это операционная система'
SUB='Linux'
if [[ "$STR" == *"$SUB"* ]]; then
  echo "Присутствует."
fi

После выполнения скрипт выдаст:

Присутствует.

Вместо использования оператора 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 также может использоваться для поиска строк в другой строке.

В следующем примере мы передаем строку $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 для тестирования.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Читайте также

Спасибо!

Теперь редакторы в курсе.