Przykłady dzielonych ciągów Bash

Bash Split String Examples



W programowaniu musimy podzielić dane łańcuchowe dla różnych celów. Wiele języków programowania ma wbudowaną funkcję o nazwie „split”, która dzieli dowolne dane ciągu na wiele części. Ale w bash nie ma wbudowanej funkcji do dzielenia ciągu. Zwykle do dzielenia dowolnych danych ciągów używane są pojedyncze lub wielokrotne ograniczniki. W tym samouczku pokazano, jak podzielić ciąg w bash na różnych przykładach.








Używanie zmiennej $IFS

Specjalna zmienna powłoki $IFS jest używana w bash do dzielenia łańcucha na słowa. Zmienna $IFS nosi nazwę wewnętrznego separatora pól (IFS), która jest używana do przypisania określonego separatora do dzielenia łańcucha. Granice słów są identyfikowane w bash przez $IFS. Spacja jest domyślną wartością ogranicznika dla tej zmiennej. Dowolna inna wartość, taka jak „ ”, „ ”, „-” itp. Można użyć jako ogranicznika. Po przypisaniu wartości do zmiennej $IFS, wartość ciągu można odczytać dwoma opcjami. Są to „-r” i „-a”. Opcja „-r” służy do odczytywania odwrotnego ukośnika () jako znaku zamiast znaku ucieczki, a opcja „-a” służy do przechowywania podzielonych słów w zmiennej tablicowej. Ciąg można podzielić bez użycia zmiennej $IFS w bash. W poniższych przykładach przedstawiono różne sposoby dzielenia danych ciągu (z $IFS lub bez $IFS).



Przykład-1: Podziel ciąg na podstawie

Wartość ciągu jest domyślnie dzielona przez białe znaki. Utwórz plik o nazwie „split1.sh” i dodaj następujący kod. Tutaj zmienna $text 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 dzielenia danych ciągu. Spacja jest używana w tym skrypcie jako separator. Opcja „-a” jest używana z poleceniem czytania do przechowywania podzielonych danych w zmiennej tablicowej o nazwie $strarr. Pętla „for” służy do odczytywania każdego elementu tablicy, $strarr.



split1.sh





#!/kosz/bash

#Zdefiniuj wartość ciągu
tekst='Witamy w LinuxHint'

# Ustaw spację jako ogranicznik
IFS=''

#Odczytaj podzielone słowa w tablicę opartą na ograniczniku spacji
czytać -dostrarr<<< '$tekst'

#Policz wszystkie słowa
wyrzucił 'Są${#strarr[*]}słowa w tekście”.

# Wydrukuj każdą wartość tablicy za pomocą pętli
dlagodzinaw '${strarr[@]}';
robić
printf '$ godzin '
Gotowe

Wyjście:

Uruchom skrypt.



$grzmotnąćsplit1.sh

Poniższe dane wyjściowe pojawią się po uruchomieniu skryptu.

Przykład-2: Podziel ciąg na podstawie określonego znaku

Jako separatora do dzielenia wartości ciągu można użyć dowolnego określonego znaku. Utwórz plik o nazwie split2.sh i dodaj następujący kod. Tutaj nazwa książki, nazwisko autora i wartość ceny są pobierane przez dodanie przecinka (,) jako ciągu wejściowego. Następnie wartość ciągu jest dzielona i przechowywana w tablicy opartej na wartości zmiennej powłoki $IFS. Każda wartość elementów tablicy jest wypisywana przez wartość indeksu.

split2.sh

#!/kosz/bash

#Odczytaj wartość ciągu
wyrzucił 'Wpisz nazwę książki, nazwisko autora i cenę, oddzielając przecinek. '
czytaćtekst

# Ustaw przecinek jako ogranicznik
IFS=','

#Odczytaj podzielone słowa do tablicy opartej na przecinku
czytać -dostrarr<<< '$tekst'

#Wydrukuj podzielone słowa
wyrzucił 'Nazwa księgi:${strarr[0] }'
wyrzucił 'Imię autora :${strarr[1]}'
wyrzucił 'Cena :${strarr[2]}'

Wyjście:

Uruchom skrypt.

$grzmotnąćsplit2.sh

Poniższe dane wyjściowe pojawią się po uruchomieniu skryptu.

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

Ten przykład pokazuje, jak można podzielić wartość ciągu bez użycia $IFS w bash. Utwórz plik o nazwie „ split3.sh ” i dodaj następujący kod. Zgodnie ze skryptem wartość tekstowa z dwukropkiem (:) musi brać jako dane wejściowe do podziału. Tutaj polecenie „readarray” z opcją -d służy do dzielenia danych ciągu. Opcja „-d” służy do zdefiniowania znaku separatora w poleceniu, takim jak $ IFS. Następnie pętla „for” służy do drukowania elementów tablicy.

split3.sh

#!/kosz/bash

#Przeczytaj główny ciąg
wyrzucił 'Wprowadź ciąg z dwukropkiem(:) do podziału'
czytaćgłówny

#Podziel ciąg na podstawie ogranicznika „:”
czytaj tablicę-D:-Tstrarr<<< '$mainstr'
printf ' '

# Wydrukuj każdą wartość tablicy za pomocą pętli
dla (( n=0; n< ${#strarr[*]}; n++))
robić
wyrzucił '${strarr[n]}'
Gotowe

Wyjście:

Uruchom skrypt.

$grzmotnąćsplit3.sh

Poniższe dane wyjściowe pojawią się po uruchomieniu skryptu.

Przykład 4: Podziel ciąg za pomocą wieloznakowego ogranicznika

We wszystkich poprzednich przykładach wartość ciągu jest podzielona przez ogranicznik pojedynczego znaku. W tym przykładzie pokazano, jak podzielić ciąg za pomocą wieloznakowego ogranicznika. Utwórz plik o nazwie Czasy split4.sh i dodaj następujący kod. Tutaj zmienna $text służy do przechowywania danych ciągu. Zmienna $delimiter służy do przypisywania danych wieloznakowych, które są używane jako ogranicznik w następnych instrukcjach. Zmienna $myarray służy do przechowywania podzielonych danych jako elementu tablicy. Na koniec wszystkie podzielone dane są drukowane za pomocą pętli „for”.

split4.sh

#!/kosz/bash

#Zdefiniuj ciąg do podziału
tekst=„learnHTMLlearnPHPlearnMySQLlearnJavascript”

#Zdefiniuj wieloznakowy ogranicznik
ogranicznik='uczyć się'
#Połącz ogranicznik z głównym ciągiem
strunowy=$tekst$ogranicznik

#Podziel tekst na podstawie ogranicznika
myarray=()
podczas [[ $string ]];robić
myarray+=( '${string%%'$delimiter'*}' )
strunowy=${string#*'$delimiter'}
Gotowe

#Wydrukuj słowa po podziale
dlawartośćw ${myarray[@]}
robić
wyrzucił -n '$wartość'
Gotowe
printf ' '

Wyjście:

Uruchom skrypt.

$grzmotnąćsplit4.sh

Poniższe dane wyjściowe pojawią się po uruchomieniu skryptu.

Wniosek:

Dane ciągu muszą zostać podzielone dla różnych celów programistycznych. W tym samouczku przedstawiono różne sposoby dzielenia danych ciągu w bash. Mam nadzieję, że po przeć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 !