Beispiele für Bash-Split-Strings

Bash Split String Examples

Wir müssen die String-Daten für verschiedene Zwecke in der Programmierung aufteilen. Viele Programmiersprachen haben eine eingebaute Funktion namens „Split“, um beliebige String-Daten in mehrere Teile aufzuteilen. Aber es gibt keine eingebaute Funktion in bash zum Teilen des Strings. Normalerweise werden einzelne oder mehrere Trennzeichen verwendet, um Zeichenfolgendaten aufzuteilen. Wie Sie den String in bash aufteilen können, wird in diesem Tutorial anhand verschiedener Beispiele gezeigt.




Verwenden der $IFS-Variablen

Die spezielle Shell-Variable $IFS wird in der bash verwendet, um einen String in Wörter aufzuteilen. Die Variable $IFS wird als Internal Field Separator (IFS) bezeichnet und wird verwendet, um das spezifische Trennzeichen für die Unterteilung der Zeichenfolge zuzuweisen. Wortgrenzen werden in bash durch $IFS identifiziert. Leerraum ist der Standardtrennzeichenwert für diese Variable. Jeder andere Wert wie ‚ ‘, ‚ ‘, ‚-‘ usw. Kann als Trennzeichen verwendet werden. Nachdem der Wert der $IFS-Variablen zugewiesen wurde, kann der Zeichenfolgenwert mit zwei Optionen gelesen werden. Dies sind „-r“ und „-a“. Die Option ‚-r‘ wird verwendet, um Backslash() als Zeichen anstatt als Escape-Zeichen zu lesen, und ‚-a‘ wird verwendet, um die aufgeteilten Wörter in einer Array-Variablen zu speichern. Der String kann geteilt werden, ohne die Variable $IFS in der Bash zu verwenden. In den folgenden Beispielen werden verschiedene Möglichkeiten zum Aufteilen von Stringdaten (mit $IFS oder ohne $IFS) gezeigt.



Beispiel-1: String aufteilen basierend auf

Der Zeichenfolgenwert wird standardmäßig durch Leerzeichen geteilt. Erstellen Sie eine Datei mit dem Namen „split1.sh“ und fügen Sie den folgenden Code hinzu. Hier wird die Variable $text verwendet, um einen Zeichenfolgenwert zuzuweisen. Die Shell-Variable $IFS wird verwendet, um das Zeichen zuzuweisen, das zum Teilen der Stringdaten verwendet wird. Leerzeichen wird in diesem Skript als Trennzeichen verwendet. Die Option '-a' wird mit dem Lesebefehl verwendet, um die aufgeteilten Daten in einer Array-Variablen namens $strarr zu speichern. Die 'for'-Schleife wird verwendet, um jedes Element des Arrays $strarr zu lesen.



split1.sh

#!/bin/bash

#Definiere den String-Wert
Text='Willkommen bei LinuxHint'

# Leerzeichen als Trennzeichen setzen
IFS=''

#Lesen Sie die geteilten Wörter in ein Array basierend auf Leerzeichen.
lesen -zustrar<<< '$text'

#Zähle die Gesamtzahl der Wörter
rauswerfen 'Es gibt${#strarr[*]}Wörter im Text.'

# Geben Sie jeden Wert des Arrays mit der Schleife aus
zumStdin '${strarr[@]}';
tun
druckenf '$ Stunden '
getan

Ausgabe:

Führen Sie das Skript aus.



$bashsplit1.sh

Die folgende Ausgabe wird angezeigt, nachdem das Skript ausgeführt wurde.

Beispiel-2: String basierend auf einem bestimmten Zeichen aufteilen

Als Trennzeichen zum Teilen des Zeichenfolgenwerts kann jedes beliebige Zeichen verwendet werden. Erstellen Sie eine Datei mit dem Namen split2.sh und fügen Sie den folgenden Code hinzu. Hier werden Buchname, Autorname und Preiswert durch Hinzufügen von Komma(,) als Eingabezeichenfolge übernommen. Als nächstes wird der String-Wert aufgeteilt und in einem Array basierend auf dem Wert der Shell-Variablen $IFS gespeichert. Jeder Wert der Array-Elemente wird durch den Indexwert ausgegeben.

split2.sh

#!/bin/bash

#Lesen Sie den String-Wert
rauswerfen 'Buchname, Autorname und Preis durch Komma trennen. '
lesenText

# Komma als Trennzeichen setzen
IFS=','

#Lesen Sie die geteilten Wörter in ein Array basierend auf dem Komma-Trennzeichen
lesen -zustrar<<< '$text'

#Drucke die geteilten Wörter
rauswerfen 'Buchname:${strarr[0] }'
rauswerfen 'Autorenname :${strarr[1]}'
rauswerfen 'Preis :${strarr[2]}'

Ausgabe:

Führen Sie das Skript aus.

$bashsplit2.sh

Die folgende Ausgabe wird angezeigt, nachdem das Skript ausgeführt wurde.

Beispiel-3: Teilen Sie den String ohne $IFS-Variable

Dieses Beispiel zeigt, wie der String-Wert geteilt werden kann, ohne $IFS in bash zu verwenden. Erstellen Sie eine Datei mit dem Namen ‘ split3.sh ’ und fügen Sie den folgenden Code hinzu. Laut Skript ein Textwert mit dem Doppelpunkt (:) als Input für die Aufteilung nehmen muss. Hier wird der Befehl ‚readarray‘ mit der Option -d verwendet, um die String-Daten aufzuteilen. Die Option '-d' wird verwendet, um das Trennzeichen im Befehl wie $IFS zu definieren. Als nächstes wird die 'for'-Schleife verwendet, um die Array-Elemente zu drucken.

split3.sh

#!/bin/bash

#Lesen Sie die Hauptzeichenfolge
rauswerfen 'Geben Sie die Zeichenfolge mit Doppelpunkt (:) zum Teilen ein'
lesenHauptstraße

#Teilen Sie die Zeichenfolge basierend auf dem Trennzeichen ':'
Lesearray-D:-Tstrar<<< '$mainstr'
druckenf ' '

# Geben Sie jeden Wert des Arrays mit Schleife aus
zum (( n=0; n< ${#strarr[*]}; n++))
tun
rauswerfen '${strarr[n]}'
getan

Ausgabe:

Führen Sie das Skript aus.

$bashsplit3.sh

Die folgende Ausgabe wird angezeigt, nachdem das Skript ausgeführt wurde.

Beispiel-4: Teilen Sie die Zeichenfolge mit einem Trennzeichen aus mehreren Zeichen

Der Zeichenfolgenwert wird in allen vorherigen Beispielen durch ein einzelnes Zeichentrennzeichen geteilt. In diesem Beispiel wird gezeigt, wie Sie die Zeichenfolge mithilfe von Trennzeichen aus mehreren Zeichen aufteilen können. Erstellen Sie eine Datei mit dem Namen Zeiten split4.sh und fügen Sie den folgenden Code hinzu. Hier wird die Variable $text verwendet, um Stringdaten zu speichern. Die Variable $delimiter wird verwendet, um Daten aus mehreren Zeichen zuzuweisen, die als Trennzeichen in den nächsten Anweisungen verwendet werden. Die Variable $myarray wird verwendet, um alle aufgeteilten Daten als Array-Element zu speichern. Schließlich werden alle geteilten Daten mit der „for“-Schleife gedruckt.

split4.sh

#!/bin/bash

#Definieren Sie die zu teilende Zeichenfolge
Text='lernenHTMLlearnPHPlearnMySQLlearnJavascript'

#Trennzeichen aus mehreren Zeichen definieren
Trennzeichen='lernen'
#Verketten Sie das Trennzeichen mit der Hauptzeichenfolge
Schnur=$text$Trennzeichen

#Teilen Sie den Text anhand des Trennzeichens auf
meinarray=()
während [[ $string ]];tun
myarray+=( '${string%%'$delimiter'*}' )
Schnur=${string#*'$begrenzer'}
getan

#Drucke die Wörter nach der Trennung aus
zumWertin ${myarray[@]}
tun
rauswerfen -n '$Wert'
getan
druckenf ' '

Ausgabe:

Führen Sie das Skript aus.

$bashsplit4.sh

Die folgende Ausgabe wird angezeigt, nachdem das Skript ausgeführt wurde.

Abschluss:

Die String-Daten müssen für verschiedene Programmierzwecke aufgeteilt werden. In diesem Tutorial werden verschiedene Möglichkeiten zum Aufteilen von Stringdaten in bash gezeigt. Ich hoffe, dass die Leser nach dem Üben der obigen Beispiele in der Lage sind, alle String-Daten basierend auf ihren Anforderungen aufzuteilen.

Für weitere Informationen ansehen das Video !