Bash-скрипты — подстрока
В этой статье мы обсудим, как написать bash-скрипт для извлечения подстроки из строки.
Извлечение подстроки на основе индекса
Существуют различные способы получения подстроки на основе индекса символов в строке:
- Использование команды « Вырезать »
- Использование подстроки Bash
- С использованием команда expr substr
- Использование awk-команды
Способ 1: Использование команды «Вырезать»
Команда Cut используется для выполнения операции нарезки для получения желаемого результата.
Синтаксис:
cut [option] range [string/filename]
Опция -c используется для вырезания строки по символу. Необходимо указать список или диапазон номеров символов, иначе выдает ошибку с этой опцией. В диапазоне укажите диапазон индексов оригинала, чтобы получить подстроку. Он использует систему индексов на основе 1 (индексация начинается с 1) .
Пример 1: В демонстрационных целях давайте извлечем последние 0 символа из строки '01010string'.
Код:
cut -c 6-11<<< "01010string"
<<< известен как здесь-строка. Используя это, можно передать готовую строку текста в программу. Мы указали диапазон от 6 до 11, потому что 6 — это начальный индекс, а 11 — конечный индекс желаемого результата.
Выход:

Пример 2: Теперь извлеките символы перед «s» в строке «01010string».
Код:
cut -c 1-5<<< "01010string"
Мы указали диапазон от 1 до 5, потому что 1 — это начальный индекс, а 5 — конечный индекс желаемого результата.
Выход:

Способ 2: подстрока Bash (без использования внешней команды)
Синтаксис:
${VAR:start_index:length}Он использует систему индексов на основе 0 .
Пример 1: Для демонстрации мы извлечем подстроку из строки «Меня зовут РОМИ» с индекса 11 по индекс 15. Для индекса с 11 по 15 длина подстроки станет равной 4.
Код:
STR="My name is ROMY"
echo ${STR:11:4}Выход:

Пример 2. Извлеките строку перед индексом 10. Поскольку этот метод использует систему индексов на основе 0, длина желаемой строки будет равна 10.
Код:
STR="My name is ROMY"
echo ${STR:0:10}Выход:

Способ 3: Использование команды expr
Используется для выполнения:
- сложение, вычитание, умножение, деление и модульные операции.
- Оценка регулярных выражений, строковые операции, такие как подстрока.
Он использует систему индексов на основе 1 .
Пример 1: Для демонстрации мы извлечем подстроку из строки «Меня зовут РОМИ» от индекса 12 до индекса 16. Для индекса от 12 до 16 длина подстроки станет равной 4.
Синтаксис:
expr substr <input_string> <start_index> <length>
Код:
expr substr "My name is ROMY" 12 4
Выход:

Пример 2. Извлечение подстроки от начала строки до индекса 10. Поскольку этот метод использует систему индексов на основе 1, длина строки до индекса 10 равна 9.
Код:
expr substr "My name is ROMY" 1 9
Выход:

Способ 4: использование команды awk
Это язык сценариев, используемый для управления данными. Он не требует компиляции и допускает строковые функции, переменные и т. д. Он имеет встроенную функцию substr(), которую можно использовать непосредственно для получения подстроки.
Функция substr(s, i, n) принимает три аргумента.
- s : входная строка
- i : начальный индекс подстроки
- n : длина подстроки.
Он использует систему индексов на основе 1 .
Синтаксис:
awk "{print substr($var,start_index, length)}"Пример 1: извлечь подстроку длины 5, начиная с индекса 12.
Код:
awk "{print substr($0, 12, 5)}" <<< "My name is ROMY"Выход:

Пример 2: извлечь строку длиной 10, начиная с индекса 1.
Код:
awk "{print substr($0, 1, 10)}" <<< "My name is ROMY"Выход:

Извлечение подстроки на основе шаблона
Существуют различные способы получения подстроки на основе шаблонов строки:
- с помощью команды вырезания
- с помощью awk-команды
Способ 1: Использование команды «Вырезать»
Для демонстрации возьмем входные строки как значения, разделенные запятыми: «Romy, Pushkar, Kareena, Katrina». Опция (-d ,) должна использоваться с командой cut, чтобы сообщить команде, что входная строка представляет собой значения, разделенные запятыми. Параметр -f указывает команде cut извлекать строку на основе поля, например (-f 3) для третьего поля в строке.
Синтаксис:
cut [option] field_position <<< "comma_seperated_string"
Код:
cut -d, -f 3 <<< “Romy,Pushkar,Kareena,Katrina”.
Это извлечет третье поле.
Выход:

Способ 2: с помощью команды awk
Синтаксис:
awk [option] field_separator ‘{print $field_position}’ <<< “input_string”
Код:
Чтобы извлечь третье поле из строки
awk -F’,’ ‘{print $1}’ <<< “Romy,Pushkar,Kareena,Katrina”
Выход:

Различный регистр подстроки на основе шаблона
Необязательно, чтобы входная строка всегда представляла собой значение, разделенное запятыми.
В этом методе мы увидим метод получения подстроки, лежащей между двумя шаблонами в строке. Эту проблему можно решить с помощью команды awk.
- sub(/.*start/, "") — удаляет все перед началом до 'start'.
- sub(/end.*/, «») — удаляет все из «конца» вместе с концом.
Синтаксис:
awk ‘{ sub(/.*BEGIN:/, “”); sub(/END:.*/, “”); print }’ <<< “input_string”
Код:
STR="Hello!! My name is ROMY kumari"
awk "{ sub(/.*!!/, ""); sub(/kumari.*/, ""); print }" <<< "$STR"Выход:
