Android

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

Винтажная реклама VW

Винтажная реклама VW

Оглавление:

Anonim

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

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

Использование подстановочных знаков

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

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

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

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if]; 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]; 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 для тестирования.

терминал bash