Ersetzen Sie Zeichen in einer Zeichenfolge mit Bash
-
Methode 1 - Verwenden Sie den Befehl
tr
- Methode 2 – Bash-Parametererweiterung verwenden
-
Methode 3 - Verwenden Sie den Befehl
sed
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.