Przykłady rozdzielonego łańcucha bash

Przykłady rozdzielonego łańcucha bash
Musimy podzielić dane ciągów do różnych celów w programowaniu. Wiele języków programowania ma wbudowaną funkcję o nazwie „podziel” do podzielenia dowolnych danych ciągów na wiele części. Ale w Bash nie ma wbudowanej funkcji dzielenia sznurka. Zwykle do podzielenia dowolnych danych łańcuchowych używane są pojedyncze lub wiele ograniczeń. Jak możesz podzielić ciąg w Bash, jest pokazany w tym samouczku za pomocą różnych przykładów.


Korzystanie z zmiennej $ ifs

Specjalna zmienna powłoki $ ifs jest używana w Bash do podziału łańcucha na słowa. $ Ifs zmienna nazywa się wewnętrznym separatorem pola (IFS), który służy do przypisania konkretnego ogranicznika do podzielenia ciągu. Granice słów są identyfikowane w Bash przez $ IFS. Biała przestrzeń jest domyślną wartością ogranicznika dla tej zmiennej. Każda inna wartość, jak „\ t”, '\ n', '-' itp. Może być używane jako ogranicznik. Po przypisaniu wartości do zmiennej $ IFS wartość ciągu można odczytać według dwóch opcji. To są „-r” i „-a”. Opcja, „-r” służy do odczytania backslash (\) jako postaci, a nie znak ucieczki, a opcja „-A” służy do przechowywania podzielonych słów w zmiennej tablicy. String można podzielić bez użycia zmiennej $ ifs w bash. Różne sposoby dzielenia danych ciągów (z $ ifs lub bez $ ifs) pokazano w następujących przykładach.

Przykład-1: podzielony ciąg oparty na przestrzeni

Wartość ciągu jest domyślnie podzielona przez białą przestrzeń. Utwórz plik o nazwie „split1.sh 'i dodaj następujący kod. Tutaj zmienna tekstowa jest używana do przypisania wartości ciągu. Zmienna powłoki, $ ifs służy do przypisania znaku, który będzie używany do podziału danych ciągów. Przestrzeń jest używana w tym skrypcie jako separator. Opcja „-A” jest używana z poleceniem czytania do przechowywania podzielonych danych w zmiennej tablicy o nazwie $ Strarr. Pętla „Do” służy do odczytu każdego elementu tablicy, $ Strarr.

split1.cii

#!/bin/bash
#Zdefiniuj wartość ciągu
Text = "Witamy w Linuxhint"
# Ustaw miejsce jako ogranicznik
Ifs = "
#Przeczytaj podzielone słowa na tablicę opartą na ograniczniku kosmicznym
Przeczytaj -a Strarr <<< "$text"
#Zakończ całkowitą liczbę słów
echo "Istnieją $ #strarr [*] słowa w tekście."
# Wydrukuj każdą wartość tablicy za pomocą pętli
dla val w „$ strarr [@]”;
Do
printf "$ val \ n"
zrobione

Wyjście:

Uruchom skrypt.

$ bash split1.cii

Następujące dane wyjściowe pojawią się po uruchomieniu skryptu.

Przykład-2: podzielony ciąg na podstawie konkretnego znaku

Każdy konkretny znak może być używany jako separator do podzielenia wartości ciągu. Utwórz plik o nazwie split2.cii i dodaj następujący kod. Tutaj nazwa książki, nazwa autora i wartość cenowa są przyjmowane przez dodanie przecinka (,) jako ciąg wejściowego. Następnie wartość ciągu jest podzielona i przechowywana w tablicy opartej na wartości zmiennej powłoki, $ IFS. Każda wartość elementów tablicy jest drukowana przez wartość indeksu.

split2.cii

#!/bin/bash
#Przeczytaj wartość ciągu
Echo „Wprowadź nazwę książki, nazwisko autora i cenę, oddzielając przecinek. "
Przeczytaj tekst
# Ustaw przecinek jako ogranicznik
Ifs = ','
#Przeczytaj podzielone słowa na tablicę opartą na ograniczniku przecinka
Przeczytaj -a Strarr <<< "$text"
#PROPREM Podzielone słowa
Echo „Nazwa książki: $ Strarr [0]”
echo "Nazwa autora: $ Strarr [1]"
Echo „Cena: $ Strarr [2]”

Wyjście:

Uruchom skrypt.

$ bash split2.cii

Następujące dane wyjściowe pojawią się po uruchomieniu skryptu.

Przykład-3: Podziel ciąg bez zmiennej $ ifs

Ten przykład pokazuje, w jaki sposób wartość ciągu można podzielić bez użycia $ ifs w bash. Utwórz plik o nazwie 'split3.cii' i dodaj następujący kod. Według skryptu wartość tekstu z okrężnicą(:) musi traktować jako dane wejściowe do podziału. Tutaj polecenie „ReadArray” z opcją -D służy do podziału danych ciągów. Opcja „-D” służy do zdefiniowania znaku separatora w poleceniu, takim jak $ ifs. Następnie pętla „for” służy do wydrukowania elementów tablicy.

split3.cii

#!/bin/bash
#Przeczytaj główny ciąg
echo „Wprowadź sznurek z dwukropkiem (:) do podziału”
Przeczytaj Mainstr
#Splip the String na podstawie ogranicznika: „:”
ReadArray -d: -t Strarr <<< "$mainstr"
printf "\ n"
# Wydrukuj każdą wartość tablicy za pomocą pętli
dla ((n = 0; n < $#strarr[*]; n++))
Do
echo "$ Strarr [n]"
zrobione

Wyjście:

Uruchom skrypt.

$ bash split3.cii

Następujące dane wyjściowe pojawią się po uruchomieniu skryptu.

Przykład-4: Podziel łańcuch za pomocą ogranicznika wielobarowego

Wartość ciągu jest podzielona przez pojedynczy znak znaków we wszystkich poprzednich przykładach. Jak możesz podzielić ciąg, używając likwitera wielu znaków, jest pokazany w tym przykładzie. Utwórz plik o nazwie „Split4.cii' i dodaj następujący kod. Tutaj zmienna tekstowa jest używana do przechowywania danych ciągów. Zmienna $ delimiter służy do przypisywania danych o wielu znakach, które są używane jako ogranicznik w następnych instrukcjach. $ MyArray zmienna służy do przechowywania każdego podzielonego danych jako elementu tablicy. Wreszcie, wszystkie podzielone dane są drukowane za pomocą „for” pętli.

split4.cii

#!/bin/bash
#Zdefiniuj ciąg do podziału
text = "LearnHtMllearnPhplearnMysqllearnjavascript"
#Definicja wielu znaków
delimiter = "naucz się"
#Concatenate the Delimiter z głównym ciągiem
string = $ text $ delimiter
#Splip Tekst na podstawie ogranicznika
myarray = ()
podczas gdy [[$ String]]; Do
myarray+= ("$ string %%" $ delimiter "*")
String = $ String#*"$ delimiter"
zrobione
#Wprowadź słowa po podzieleniu
Dla wartości w $ myarray [@]
Do
echo -n „$ wartość”
zrobione
printf "\ n"

Wyjście:

Uruchom skrypt.

$ bash split4.cii

Następujące dane wyjściowe pojawią się po uruchomieniu skryptu.

Wniosek:

Dane ciągów muszą podzielić się na różne cele programowania. W tym samouczku pokazano różne sposoby podziału danych ciągów w BASH. Mam nadzieję, że po ćwiczeniu powyższych przykładów czytelnicy będą mogli podzielić dowolne dane łańcuchowe na podstawie ich wymagań.

Aby uzyskać więcej informacji, obejrzyj wideo!