Ersetzen Sie Zeichen in einer Zeichenfolge mit Bash

Faiq Bilal 20 Juni 2023
  1. Methode 1 - Verwenden Sie den Befehl tr
  2. Methode 2 – Bash-Parametererweiterung verwenden
  3. Methode 3 - Verwenden Sie den Befehl sed
Ersetzen Sie Zeichen in einer Zeichenfolge mit Bash

Eine übliche Operation mit string-Literalen ist das Ersetzen einzelner Zeichen oder Teilstrings in diesem String durch andere Zeichen oder Teilstrings.

In diesem Artikel werden wir uns verschiedene Methoden zum Ersetzen von Zeichenfolgen mit der BASH-Shell ansehen.

Methode 1 - Verwenden Sie den Befehl tr

Das tr ist ein sehr praktischer Bash-Befehl, mit dem verschiedene Transformationen an einem String durchgeführt werden können. Es ist besonders hilfreich bei Zeichenfolgentransformationen (z. B. Ändern der Groß- oder Kleinschreibung der Zeichenfolge), Entfernen von Wiederholungen von Teilzeichenfolgen und Suchen und Ersetzen von Teilzeichenfolgen.

Es wird verwendet, um Zeichen und Teilzeichenfolgen in einer Zeichenfolge zu ersetzen.

Syntax:

echo "$variableName" | tr [character(s)ToBeRemoved] [character(s)ToBeAdded]

Skriptbeispiel:

STR="ABCD"
echo "$STR" | tr A Z

Ausgang:

ZBCD

Das Zeichen "A" in der String-Variablen $STR wird durch das Zeichen "Z" ersetzt. Es ist wichtig zu beachten, dass der obige Befehl auch zum Ersetzen aller Instanzen des Zeichens "A" funktioniert.

Skriptbeispiel:

STR="ABACAD"
echo "$STR" | tr A Z

Ausgang:

ZBZCZD

Für komplexere Anwendungsfälle wie das Ersetzen eines einzelnen Zeichens durch mehrere Zeichen oder das Ersetzen von Teilzeichenfolgen durch andere Teilzeichenfolgen kann der Befehl tr immer noch verwendet werden, aber es wäre notwendig, reguläre Ausdrücke (RegEx) einzubinden und zu verwenden, um dies zu erreichen Aufgaben.

Eine weitere nützliche Befehlsoption mit tr ist die Option Squeeze oder -s, die eine Zeichenfolge oder einen Teilstring durch ein einzelnes Zeichen ersetzen kann.

Skriptbeispiel:

STR="ABBBCDDDDDE"
echo "$STR" | tr -s BD Z

Ausgang:

AZCZE

Wie zu sehen ist, wurden mehrere benachbarte Vorkommen der Zeichen “B” und “D” durch ein einzelnes “Z” ersetzt.

Methode 2 – Bash-Parametererweiterung verwenden

Dem Symbol $ wird üblicherweise ein Variablenname vorangestellt, um der Variablen einen Wert zuzuweisen oder ihren Inhalt auszudrucken. Wir können es jedoch auch für die Parametererweiterung verwenden.

Wir können eine Parametererweiterung verwenden, um den Inhalt einer Variablen auf folgende Weise durch einen bestimmten Teilstring zu ersetzen.

Syntax:

${varName/substring/replacement}

Bitte beachten Sie, dass die Verwendung von geschweiften Klammern bei der Variablenexpansion optional ist.

Skriptbeispiel:

STR="I LIKE FOOTBALL"
echo ${STR/FOOTBALL/CRICKET}

Ausgang:

I LIKE CRICKET

Beachten Sie, dass die Verwendung eines einzelnen Schrägstrichs nach dem Variablennamen im Parametererweiterungsbefehl nur das erste Vorkommen der Teilzeichenfolge ersetzt. Verwenden Sie das folgende Skript, um alle Vorkommen einer Teilzeichenfolge in einer Zeichenfolge oder doppelte Schrägstriche zu ersetzen.

Skriptbeispiel:

${varName//substring/replacement}

Methode 3 - Verwenden Sie den Befehl sed

Der Befehl sed ähnelt dem Befehl tr. Dennoch ist es leistungsfähiger, da es verwendet werden kann, um Textdateien direkt zu bearbeiten, ohne sie zu öffnen. Der Befehl sed in BASH steht für Stream-Editor. Es führt viele Funktionen für Dateien aus, z. B. Suchen, Finden und Ersetzen sowie Einfügen oder Löschen.

Der Befehl sed kann auf folgende Weise zum Ersetzen von Zeichenfolgen verwendet werden.

Skriptbeispiel:

STR=AZC
echo "$STR" | sed -r 's/[Z]+/B/g'

Ausgang:

ABC

Dies ähnelt der Verwendung des Befehls tr. Die Option -r nach dem Befehl sed zeigt Ersetzung an, und Mustervergleich (RegEx) beschreibt, was gesucht und ersetzt werden soll.

Beachten Sie, dass die Syntax für den Befehl sed zwischen den Bash-Versionen auf verschiedenen Systemen leicht variiert, was zu unvorhergesehenem Verhalten führen kann.

Verwandter Artikel - Bash String