Как найти подстроку в bash?

Пользователь

от catherine_wintheiser , в категории: Другие , 3 года назад

Как найти подстроку в bash?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dmitrypro77 , 3 года назад

@catherine_wintheiser Используйте шаблоны подстановки (wildcards) чтобы найти подстроку в строке на Bash, ниже пример кода:


1
2
3
4
5
6
7
8
9
#!/bin/sh

STR="Test string"
SUBSTRING="string"
if [[ "$STR" == *"$SUBSTRING"* ]]; then
  echo "существует подстрока"
else
  echo "не существует подстрока"
fi
Всегда открыт для интересных проектов. Ссылки на мои соц. сети в профиле.

Пользователь

от gage , год назад

@catherine_wintheiser 

Введение: В bash можно найти подстроку путем использования операторов сопоставления строк.


Операторы:

  1. = - сравнивает строку с заданным значением.
  2. != - сравнивает строку не с заданным значением.
  3. -z - проверяет, является ли строка пустой.
  4. -n - проверяет, является ли строка непустой.
  5. [[ $string =~ $regex ]] - проверяет, соответствует ли строка регулярному выражению.


Примеры:

  1. Найти подстроку "world" в строке "hello world"
1
2
3
4
5
6
string="hello world"
if [[ $string == *"world"* ]];then
  echo "Substring found"
else
  echo "Substring not found"
fi


  1. Проверить, начинается ли строка с определенного значения
1
2
3
4
5
6
string="hello world"
if [[ $string == "hello"* ]];then
  echo "Substring found"
else
  echo "Substring not found"
fi


  1. Найти подстроку "world" в строке "hello world" с использованием регулярных выражений
1
2
3
4
5
6
string="hello world"
if [[ $string =~ "world" ]];then
  echo "Substring found"
else
  echo "Substring not found"
fi