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

12 set 2022 1 min di lettura
Как проверить, содержит ли строка подстроку в Bash
Indice dei contenuti

Введение

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

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

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

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

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

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

#!/bin/bash

 STR='GNU/Linux is an operating system'
 SUB='Linux'
 if [[ "$STR" == *"$SUB"* ]]; then
 echo "Exists!"
 fi

После выполнения скрипт сгенерирует:

Exists!

Использование кейс-воркера

Вместо использования оператора if вы также можете использовать оператор case, чтобы проверить, включает ли строка другую строку или нет.

#!/bin/bash

 STR='GNU/Linux is an operating system'
 SUB='Linux'

 case $STR in

 *"$SUB"*)
 echo -n "Exists!"
 ;;
 esac

Использование оператора регулярного выражения

Другой способ определить, встречается ли указанная подстрока в строке, — использовать оператор regex = ~. При использовании этого оператора правильная строка рассматривается как регулярное выражение.

Точка, за которой следует звездочка * Соответствует нулю или более вхождений любого символа, кроме символа новой строки.

#!/bin/bash

 STR='GNU/Linux is an operating system'
 SUB='Linux'

 if [[ "$STR" =~.*"$SUB".* ]]; then
 echo "Exists!"
 fi

Скрипт вернет следующее сообщение:

Exists!

Использование 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 "Exists!"
 fi

Параметр -q указывает grep пропустить вывод.

Вывод

Проверка наличия в строке подстроки — одна из самых основных и часто используемых операций в сценариях Bash.

После прочтения этого руководства вы должны хорошо понимать, как проверить, включает ли строка другую строку. Вы также можете использовать другие команды, такие как awk или sed для тестирования.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.