Примери за разделяне на Bash

Bash Split String Examples



Трябва да разделим низовите данни за различни цели при програмирането. Много езици за програмиране имат вградена функция, наречена „split“ за разделяне на всички низови данни на множество части. Но в bash няма вградена функция за разделяне на низ. Обикновено за разделяне на всякакви низови данни се използват единични или множество разделители. Как можете да разделите низ в bash е показано в този урок, като използвате различни примери.








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

Специалната променлива на обвивката $ IFS се използва в bash за разделяне на низ на думи. Променливата $ IFS се нарича Вътрешен разделител на полета (IFS), който се използва за присвояване на специфичния разделител за разделяне на низа. Границите на думите са идентифицирани в bash от $ IFS. Бялото пространство е стойността на разделителя по подразбиране за тази променлива. Всяка друга стойност като „ t“, „ n“, „-“ и т.н. може да се използва като разделител. След присвояване на стойността на променлива $ IFS, стойността на низа може да бъде прочетена чрез две опции. Това са „-r“ и „-a“. Опцията „-r“ се използва за четене на обратна наклонена черта () като знак, а не за бягство, а опцията „-a“ се използва за съхраняване на разделените думи в променлива на масив. Низът може да бъде разделен без използване на променлива $ IFS в bash. В следващите примери са показани различни начини за разделяне на низови данни (с $ IFS или без $ IFS).



Пример-1: Разделяне на низ въз основа на

Стойността на низа е разделена на празно пространство по подразбиране. Създайте файл с име „split1.sh“ и добавете следния код. Тук променливата $ text се използва за присвояване на стойност на низ. Променливата на черупката, $ IFS се използва за присвояване на знака, който ще се използва за разделяне на низовите данни. Пространството се използва в този скрипт като разделител. Опцията „-a“ се използва с команда за четене за съхраняване на разделените данни в променлива на масив, наречена $ strarr. Цикълът „for“ се използва за четене на всеки елемент от масива, $ strarr.



split1.sh





#!/bin/bash

#Определете стойността на низа
текст=„Добре дошли в LinuxHint“

# Задайте пространство като разделител
IFS=''

#Прочетете разделените думи в масив въз основа на разделител на интервали
Прочети -да сеstrarr<<< '$ текст'

#Пребройте общите думи
изхвърлен 'Има$ {#strarr [*]}думи в текста. '

# Отпечатайте всяка стойност на масива, като използвате цикъла
зачасв '$ {strarr [@]}';
направете
printf '$ часовен'
Свършен

Изход:

Стартирайте скрипта.



$башsplit1.sh

Следният изход ще се появи след стартиране на скрипта.

Пример-2: Разделяне на низ въз основа на определен символ

Всеки отделен знак може да се използва като разделител за разделяне на стойността на низа. Създайте файл с име split2.sh и добавете следния код. Тук името на книгата, името на автора и цената се вземат чрез добавяне на запетая (,) като входен низ. След това стойността на низа се разделя и съхранява в масив въз основа на стойността на променливата на черупката, $ IFS. Всяка стойност на елементите на масива се отпечатва от стойността на индекса.

split2.sh

#!/bin/bash

#Прочетете стойността на низа
изхвърлен „Въведете име на книга, име на автор и цена, като разделите запетая. '
Прочетитекст

# Задайте запетая като разделител
IFS=','

#Прочетете разделените думи в масив въз основа на разделител на запетаи
Прочети -да сеstrarr<<< '$ текст'

#Отпечатайте разделените думи
изхвърлен „Име на книгата:$ {strarr [0]}'
изхвърлен „Име на автора:$ {strarr [1]}'
изхвърлен 'Цена :$ {strarr [2]}'

Изход:

Стартирайте скрипта.

$башsplit2.sh

Следният изход ще се появи след стартиране на скрипта.

Пример-3: Разделете низа без променлива $ IFS

Този пример показва как стойността на низа може да бъде разделена, без да се използва $ IFS в bash. Създайте файл с име „ split3.sh ’ и добавете следния код. Според скрипта, текстова стойност с двоеточие (:) трябва да се вземе като вход за разделяне. Тук командата „readarray“ с опция -d се използва за разделяне на низовите данни. Опцията „-d“ се използва за дефиниране на разделителния знак в командата като $ IFS. След това цикълът „for“ се използва за отпечатване на елементите на масива.

split3.sh

#!/bin/bash

#Прочетете основния низ
изхвърлен 'Въведете низ с двоеточие (:) за разделяне'
Прочетиmainstr

#Разделете низа въз основа на разделителя, ':'
четене на масиви:-Tstrarr<<< '$ mainstr'
printf 'н'

# Отпечатайте всяка стойност на масива, като използвате цикъл
за (( н=0; н< $ {#strarr [*]}; n ++))
направете
изхвърлен '$ {strarr [n]}'
Свършен

Изход:

Стартирайте скрипта.

$башsplit3.sh

Следният изход ще се появи след стартиране на скрипта.

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

Стойността на низа се разделя от разделител с един знак във всички предишни примери. В този пример е показано как можете да разделите низа с помощта на многознаков разделител. Създайте файл с име Times split4.sh и добавете следния код. Тук променливата $ text се използва за съхраняване на низови данни. Променливата $ delimiter се използва за присвояване на многознакови данни, които се използват като разделител в следващите оператори. Променливата $ myarray се използва за съхраняване на всички разделени данни като елемент от масив. И накрая, всички разделени данни се отпечатват чрез цикъл „for“.

split4.sh

#!/bin/bash

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

#Определете многознаков разделител
разделител='уча'
#Свържете разделителя с основния низ
низ=$ текст$ разделител

#Разделете текста въз основа на разделителя
myarray=()
докато [[ $ низ ]];направете
myarray+=( '$ {string %% '$ delimiter'*}' )
низ=$ {string#*'$ delimiter'}
Свършен

#Отпечатайте думите след разделянето
застойноств $ {myarray [@]}
направете
изхвърлен '$ стойност'
Свършен
printf 'н'

Изход:

Стартирайте скрипта.

$башsplit4.sh

Следният изход ще се появи след стартиране на скрипта.

Заключение:

Низовите данни трябва да се разделят за различни програмни цели. В този урок са показани различни начини за разделяне на низови данни в bash. Надявам се, че след като практикуват горните примери, читателите ще могат да разделят всички низови данни въз основа на техните изисквания.

За повече информация гледайте видеото !