Примеры разделенной строки в Bash

Bash Split String Examples



Нам нужно разделить строковые данные для различных целей в программировании. Многие языки программирования имеют встроенную функцию под названием «split» для разделения любых строковых данных на несколько частей. Но в bash нет встроенной функции для разделения строки. Обычно для разделения любых строковых данных используются один или несколько разделителей. В этом руководстве показано, как разделить строку в bash на различных примерах.








Использование переменной $ IFS

Специальная переменная оболочки $ IFS используется в bash для разделения строки на слова. Переменная $ IFS называется внутренним разделителем полей (IFS), который используется для назначения определенного разделителя для разделения строки. Границы слов в bash обозначаются $ IFS. Пробел является значением разделителя по умолчанию для этой переменной. В качестве разделителя можно использовать любое другое значение, например « t», « n», «-» и т. Д. После присвоения значения переменной $ IFS строковое значение можно прочитать двумя способами. Это «-р» и «-а». Параметр ‘-r’ используется для чтения обратной косой черты () как символа, а не escape-символа, а параметр ‘-a’ используется для сохранения разделенных слов в переменной массива. Строку можно разделить без использования переменной $ IFS в bash. В следующих примерах показаны различные способы разделения строковых данных (с помощью $ IFS или без $ IFS).



Пример-1: Разделить строку на основе

По умолчанию строковое значение разделено пробелом. Создайте файл с именем «split1.sh» и добавьте следующий код. Здесь переменная $ text используется для присвоения строкового значения. Переменная оболочки $ IFS используется для присвоения символа, который будет использоваться для разделения строковых данных. В этом скрипте в качестве разделителя используется пробел. Параметр ‘-a’ используется с командой чтения для сохранения разделенных данных в переменной массива с именем $ strarr. Цикл for используется для чтения каждого элемента массива $ strarr.



split1.sh





#! / bin / bash

# Определить строковое значение
текстзнак равно'Добро пожаловать в LinuxHint'

# Установите пробел в качестве разделителя
IFSзнак равно''

# Считать разделенные слова в массив на основе разделителя пробелов
читать Strarr<<< '$ text'

# Подсчитать общее количество слов
выбросил 'Есть$ {# strarr [*]}слова в тексте ».

# Распечатать каждое значение массива, используя цикл
длячасыв '$ {strarr [@]}';
делать
printf '$ часов п'
сделано

Выход:

Запускаем скрипт.



$трепатьsplit1.sh

Следующий вывод появится после запуска скрипта.

Пример-2: разделить строку на основе определенного символа

Любой конкретный символ может использоваться в качестве разделителя для разделения строкового значения. Создайте файл с именем split2.sh и добавьте следующий код. Здесь имя книги, имя автора и стоимость берутся путем добавления запятой (,) в качестве входной строки. Затем строковое значение разделяется и сохраняется в массиве на основе значения переменной оболочки $ IFS. Каждое значение элементов массива печатается значением индекса.

split2.sh

#! / bin / bash

# Прочитать строковое значение
выбросил 'Введите название книги, имя автора и цену через запятую. '
читатьтекст

# Установить запятую как разделитель
IFSзнак равно','

# Считать разделенные слова в массив на основе разделителей запятой
читать Strarr<<< '$ text'

# Печатать разделенные слова
выбросил Название книги:$ {strarr [0]}'
выбросил 'Имя автора :$ {strarr [1]}'
выбросил 'Цена :$ {strarr [2]}'

Выход:

Запускаем скрипт.

$трепатьsplit2.sh

Следующий вывод появится после запуска скрипта.

Пример-3: разделить строку без переменной $ IFS

В этом примере показано, как можно разделить строковое значение без использования $ IFS в bash. Создайте файл с именем ‘ split3.sh ’ и добавьте следующий код. По сценарию текстовое значение с двоеточием (:) должен принимать в качестве входных данных для разделения. Здесь команда «readarray» с параметром -d используется для разделения строковых данных. Параметр ‘-d’ используется для определения символа-разделителя в команде, например, $ IFS. Затем цикл for используется для печати элементов массива.

split3.sh

#! / bin / bash

# Прочитать основную строку
выбросил 'Введите строку с двоеточием (:) для разделения'
читатьmainstr

# Разделить строку по разделителю ':'
readarray-d:-tStrarr<<< '$ mainstr'
printf ' п'

# Распечатать каждое значение массива с помощью цикла
для (( пзнак равно0; п< $ {# strarr [*]}; n ++))
делать
выбросил '$ {strarr [n]}'
сделано

Выход:

Запускаем скрипт.

$трепатьsplit3.sh

Следующий вывод появится после запуска скрипта.

Пример-4: разделить строку многосимвольным разделителем

Во всех предыдущих примерах строковое значение разделено односимвольным разделителем. В этом примере показано, как можно разделить строку с помощью многосимвольного разделителя. Создайте файл с именем Время split4.sh и добавьте следующий код. Здесь переменная $ text используется для хранения строковых данных. Переменная $ delimiter используется для назначения многосимвольных данных, которые используются в качестве разделителя в следующих операторах. Переменная $ myarray используется для хранения всех разделенных данных в виде элемента массива. Наконец, все разделенные данные печатаются с использованием цикла for.

split4.sh

#! / bin / bash

# Определите строку для разделения
текстзнак равно'learnHTMLlearnPHPlearnMySQLlearnJavascript'

# Определить многосимвольный разделитель
разделительзнак равно'учиться'
# Соедините разделитель с основной строкой
нитьзнак равно$ textразделитель $

# Разделить текст по разделителю
Myarrayзнак равно()
в то время как [[ $ строка ]];делать
myarray + =( '$ {строка %% '$ разделитель' *}' )
нитьзнак равно$ {строка # * '$ разделитель'}
сделано

# Печатать слова после разделения
дляценитьв $ {myarray [@]}
делать
выбросил -n '$ значение'
сделано
printf ' п'

Выход:

Запускаем скрипт.

$трепатьsplit4.sh

Следующий вывод появится после запуска скрипта.

Заключение:

Строковые данные необходимо разделить для разных целей программирования. В этом руководстве показаны различные способы разделения строковых данных в bash. Надеюсь, что после отработки приведенных выше примеров читатели смогут разделить любые строковые данные в соответствии со своими требованиями.

Для получения дополнительной информации смотрите видео !