GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash-Scripting – String-Manipulation

Die String-Manipulation ist eines der grundlegenden Konzepte beim Bash-Scripting. Bei der Programmierung gehören Strings zu den Datentypen, bei denen es sich um eine geordnete Folge von Zeichen handelt. Es ist wichtig, dass Sie wissen, wie man Strings in Bash erstellt und manipuliert. In diesem Handbuch lernen wir die String-Manipulation in Bash-Shell-Skripten anhand einfacher Beispiele kennen. Am Ende dieses Artikels werden Sie sicher sein, mit Bash-Strings zu arbeiten.

Variablenzuweisung

Zeichenfolgen können einer Variablen zugewiesen und später im Skript zur weiteren Verarbeitung verwendet werden. Zum Beispiel erstelle ich eine Variable mit dem Namen "GREET_USER" und den String auf dem Terminal ausgeben.

$ GREET_USER="Hello, Thanks for visiting OSTechnix"
$ echo "$GREET_USER"

Bash hat kein starkes Typsystem. Wenn Sie also einer Variablen einen Wert zuweisen, wird sie als String-Typ behandelt. Sie können Zeichenfolgen mit einfachen, doppelten oder keinen Anführungszeichen erstellen.

Es gibt einen Unterschied zwischen einfachen und doppelten Anführungszeichen in Bash. Einfache Anführungszeichen verhindern die Erweiterung von Variablen und Befehlen, während doppelte Anführungszeichen dies unterstützen. Schauen Sie sich das folgende Beispiel an.

Ich habe eine weitere Variable namens "SITE_NAME" erstellt und es wird im "GREET_USER" Variable. In doppelten Anführungszeichen wird die Variable erweitert und in einfachen Anführungszeichen wird die Variable nicht erweitert.

$ SITE_NAME="OSTechnix"
## DOUBLE QUOTES

$ GREET_USER="Hello, Thanks for visiting ${SITE_NAME}"
$ echo "$GREET_USER"
# SINGLE QUOTES

$ GREET_USER='Hello, Thanks for visiting ${SITE_NAME}'
$ echo "$GREET_USER"

Länge der Zeichenkette

Um die Länge der Zeichenfolge zu ermitteln, können Sie den # verwenden Symbol. Das Ermitteln der Länge der Zeichenfolge ist in einigen Fällen nützlich, in denen Sie eine Logik basierend auf der Anzahl der Zeichenfolgen schreiben müssen.

$ echo "${#SITE_NAME}"

Strings in Array umwandeln

Es gibt viele Möglichkeiten, den String-Datentyp in den Array-Typ umzuwandeln. Am einfachsten wäre es, den String in geschweifte Klammern einzuschließen.

$ ARR_TYPE=($GREET_USER)
$ echo ${ARR_TYPE[@]}
$ for element in ${ARR_TYPE[@]}; do
  echo $element
done

Die zweite Methode wäre, die Zeichenfolge aufzuteilen und als Array zu speichern, basierend auf dem in der Zeichenfolge verwendeten Trennzeichen. Im vorherigen Beispiel wird Leerzeichen als Feldtrennzeichen (IFS) verwendet, was das Standard-IFS in Bash ist. Wenn Sie beispielsweise eine durch Kommas getrennte Zeichenfolge haben, können Sie den IFS auf ein Komma setzen und ein Array erstellen. Weitere Einzelheiten zu IFS finden Sie in der folgenden Anleitung:

  • Bash-Skripting – While- und Until-Schleife mit Beispielen erklärt
$ STR_TO_ARR="column1,column2,column3"
$ IFS=","
$ ARR=(${STR_TO_ARR})
$ for element in ${ARR[@]}; do echo $element; done
$ echo "${ARR[@]}"

Fallumwandlung

Bash verfügt über eine integrierte Unterstützung für die Umwandlung von Zeichenfolgen in Groß- und Kleinschreibung. Sie müssen einige Sonderzeichen am Ende der Zeichenfolge für die Groß-/Kleinschreibung verwenden, wie unten gezeigt.

# SPECIAL CHARACTERS

,, ==> Converts an entire string to lowercase
^^ ==> Converts an entire string to Uppercase
~~ ==> Transpose Case
,  ==> Converts first letter alone to lowercase
^  ==> Converts first letter alone to uppercase
# ---- LOWER TO UPPER CASE ----
$ L_TO_U="welcome to ostechnix"
$ echo ${L_TO_U^^}


# ---- UPPER TO LOWER CASE ----
$ U_TO_L="WELCOME TO OSTECHNIX"
$ echo ${L_TO_U,,}


# ---- TRANSPOSE CASE ----
$ TRS_CASE="Welcome To OsTechnix"
$ echo ${TRS_CASE~~}


# ---- FIRST LETTER TO LOWERCASE ----
$ F_TO_L="OSTECHNIX"
$ echo ${F_TO_L,}


# ---- FIRST LETTER TO UPPERCASE ----
$ F_TO_U="ostechnix"
$ echo ${F_TO_U^}

Sie können auch Regex-Musterabgleich verwenden und die Groß-/Kleinschreibung für die Übereinstimmungen umwandeln.

$ L_TO_U="welcome to ostechnix"
$ echo ${L_TO_U^^[toe]}

String-Verkettung

Sie können mehrere Zeichenfolgen verketten, indem Sie die Zeichenfolgen hintereinander platzieren. Je nachdem, wie Ihre Zeichenfolgen verkettet sind, können Sie auch zusätzliche Zeichen hinzufügen.

$ SITE_NAME="OSTechnix"
$ MESSAGE="Welcome to"
$ echo "${MESSAGE} {SITE_NAME}"

String-Slicing

String Slicing ist eine Möglichkeit, einen Teil eines Strings anhand der Indexposition zu extrahieren. Jedem Zeichen in der Zeichenfolge wird ein Integer-Wert zugewiesen, mit dem ein Teil der Zeichenfolge erfasst werden kann. Der Indexwert reicht von 0 bis N. Nachfolgend finden Sie die Syntax für das Slicing.

{STRING:START:LENGTH}

START => Starting Index Position
LENGTH => Length of the String from position START

Wenn LENGTH nicht angegeben, wird der String ab der Indexposition START bis zum Ende ausgegeben .

$ SITE_NAME="OSTechnix"
$ echo ${SITE_NAME:2}

Wenn LENGTH angegeben ist, wird der Teilstring ab der START-Indexposition gedruckt und wie viele Zeichen gedruckt werden sollen.

$ echo ${SITE_NAME:2:2}

Sie können die Zeichenfolge auch auf viele Arten umkehren. Der einfachste Weg ist die Verwendung des rev-Befehls. Wenn Sie dies auf Bash-Weise tun möchten, ohne einen externen Befehl zu verwenden, müssen Sie die Logik manuell schreiben.

$ echo ${SITE_NAME} | rev

Suchen und ersetzen

Es gibt eine native Möglichkeit, Zeichen in einer Zeichenfolge zu suchen und zu ersetzen, ohne einen externen Befehl wie sed zu verwenden oder awk .

Verwenden Sie die folgende Syntax, um das erste Vorkommen von substring zu ersetzen.

{STRING/X/Y}
The first occurrence of X will be replaced by Y.

Sehen Sie sich das folgende Beispiel an, wo das erste Vorkommen des Wortes "linux" wird durch LINUX ersetzt in Großbuchstaben.

$ MESSAGE="linux is awesome to work with.
Ubuntu is one of the powerful linux distribution"
$ echo $MESSAGE
$ echo ${MESSAGE/linux/LINUX}

Verwenden Sie die folgende Syntax, um alle Vorkommen des Wortes zu ersetzen.

$ echo ${MESSAGE//linux/LINUX}

Teilstring entfernen

Es gibt verschiedene Möglichkeiten, Teilstrings aus dem String zu entfernen. Externe Dienstprogramme wie sed , awk , oder tr kann verwendet werden oder es gibt eine Möglichkeit, dies auf native Bash-Weise zu tun.

In der nativen Bash-Methode wird die Parametererweiterung verwendet, um die Teilzeichenfolge zu entfernen. Sie müssen den % verwenden Symbol gefolgt von einem zu entfernenden Muster. Dadurch wird das zuletzt gefundene Muster abgeglichen und entfernt.

Zum Beispiel möchte ich die Wörter entfernen, die nach dem Punkt kommen (. ) sollte die folgende Syntax verwendet werden. Hier kommt alles nach dem Punkt (. ) werden entfernt. In diesem Fall das letzte übereinstimmende Muster .com wird entfernt.

$ SITE_NAME="www.ostechnix.com"
$ echo ${SITE_NAME%.*}

Um das erste Vorkommen des Musters abzugleichen, verwenden Sie doppelte Prozentzahl Symbol

$ SITE_NAME="www.ostechnix.com"
$ echo ${SITE_NAME%%.*}

Sie können auch # verwenden oder ## Symbol, das eine Art umgekehrtes Löschen ausführt. Mit einem einzigen # Symbol, wird das erste Muster abgeglichen und alles vor dem Muster gelöscht.

$ SITE_NAME="www.ostechnix.com"
$ echo ${SITE_NAME#*.}

Mit dem doppelten ## Symbol, wird das letzte Muster abgeglichen und alles vor dem Muster gelöscht.

$ SITE_NAME="www.ostechnix.com"
$ echo ${SITE_NAME##*.}

Schlussfolgerung

In diesem Artikel haben wir gesehen, wie man Strings in Bash erstellt und wie man die Strings manipuliert. Um sich mit der Manipulation von Bash-Strings vertraut zu machen, starten Sie das Terminal und beginnen Sie, die in diesem Handbuch bereitgestellten Beispiele zu üben. Wenn Sie Feedback oder Fragen haben, verwenden Sie bitte den Kommentarbereich unten.

Bash-Scripting-Leitfäden:

  • Bash-Skripting – Printf-Befehl mit Beispielen erklärt
  • Bash-Skripting – Indiziertes Array mit Beispielen erklärt
  • Bash-Skripting – Assoziatives Array mit Beispielen erklärt
  • Bash-Skripting – For-Schleife mit Beispielen erklärt
  • Bash-Umleitung mit Beispielen erklärt
  • Bash-Scripting – Variablen mit Beispielen erklärt
  • Bash-Scripting – Funktionen mit Beispielen erklärt
  • Bash-Echo-Befehl mit Beispielen in Linux erklärt
  • Bash Heredoc-Tutorial für Anfänger

Linux
  1. Bash-Scripting(I)

  2. So vergleichen Sie Zeichenfolgen in Bash Shell-Skripten

  3. So prüfen Sie, ob String in Bash einen Teilstring enthält

  4. Beispiele für Bash-String-Manipulationen – Länge, Teilstring, Suchen und Ersetzen

  5. Verwenden von random zum Generieren einer zufälligen Zeichenfolge in Bash

Bash-Skripting – Bedingte Anweisungen

Bash-Skripting – Case-Statement

Bash-Skripting (II)

Bash-Scripting(III)

Benutzeroberflächen mit Dialog. Bash-Skripting (IV)

Bash-Anfängerserie Nr. 6:Zeichenfolgenoperationen in Bash