So ersetzen Sie eine Zeichenfolge in einer Datei in Bash

So ersetzen Sie eine Zeichenfolge in einer Datei in Bash

Als Programmierer müssen Sie möglicherweise mit verschiedenen Arten von Dateien arbeiten, um Daten vorübergehend oder dauerhaft zu speichern. Manchmal müssen Sie möglicherweise einen Teil der Datei ersetzen oder den bestimmten Inhalt der Datei ändern. Um Inhalte in einer Datei zu ersetzen, müssen Sie nach der bestimmten Dateizeichenfolge suchen. Der "sed" Der Befehl wird verwendet, um eine Zeichenfolge in einer Datei mit einem Bash -Skript zu ersetzen. Dieser Befehl kann auf verschiedene Weise verwendet werden, um den Inhalt einer Datei in Bash zu ersetzen. Der 'Awk'Befehl kann auch verwendet werden, um die Zeichenfolge in einer Datei zu ersetzen. In diesem Tutorial werden Sie angezeigt.

01. Allgemeine Syntax für SED
02. Ersetzen Sie die Zeichenfolge in der Datei durch Bash SED -Skript
03. Sed G und ich befehlen für globale und fälschliche unempfindliche
04. SED -Ziffern Matching
05. Allgemeine Syntax für awk
06. Ersetzen Sie die Zeichenfolge in der Datei durch Bash awk Skript
07. Ersetzen Sie die Zeichenfolge in der Datei durch reine Bash -Skript
08. Ersetzen Sie die Zeichenfolge in der Datei durch Perl One Liner

Beispieldaten für den Austausch von Bash -Zeichenfolge

Eine Textdatei mit dem Namen Verkauf.txt Mit dem folgenden Inhalt wird erstellt, um die Ersatzvorgänge anzuzeigen.
Verkauf.txt

Datum des Betragsbereichs
01/01/2020 60000 Dhaka
10/02/2020 76000 Rajshahi
21/03/2020 54000 Khulna
15/04/2020 78000 Chandpur
17/05/2020 45000 Bogra
02/06/2020 67000 Comilla

Allgemeine Syntax für SED: Ersetzen Sie die Zeichenfolge in einer Datei

Die grundlegende Syntax der ''sedDer Befehl zum Ersetzen der bestimmten Zeichenfolge in einer Datei ist unten angegeben.

Syntax

SED -i 's/search_string/ersatz_string/' Dateiname

Jeder Teil der obigen Syntax wird unten erklärt.

'-ich' Die Option wird verwendet, um den Inhalt der Originaldatei mit der Ersatzzeichenfolge zu ändern, wenn die Suchzeichenfolge in der Datei vorliegt.
'S' Zeigt den Ersatzbefehl an.
'Suchbegriff' Enthält den Zeichenfolgenwert, der in der Datei zum Ersatz durchsucht wird.
'ersetzen_string' Enthält den Zeichenfolgenwert, der verwendet wird, um den Inhalt der Datei zu ersetzen, die mit der übereinstimmt 'Suchbegriff' Wert.
'Dateinamen' Enthält den Dateinamen, bei dem die Suche und das Ersetzen angewendet werden.

Beispiel 1: Datei durch den Befehl 'SED' ersetzen

Im folgenden Skript wird der Such- und Replace-Text vom Benutzer entnommen. Wenn die Suchzeichenfolge im Verkauf vorliegt.TXT ', dann wird es durch die Ersatzzeichenfolge ersetzt. Hier wird eine sensible Suche durchgeführt.

#!/Bin/Bash
# Zuweisen Sie den Dateinamen
Dateiname = "Verkäufe.txt"
# Nehmen Sie die Suchzeichenfolge
Lesen Sie -p "Geben Sie den Suchzeichenfolge ein:" Suche
# Nehmen Sie die Zeichenfolge ersetzen
Lesen Sie -p "Geben Sie die Zeichenfolge Ersetzen:" Ersetzen
Wenn [[$ Search != "" && $ ersetzen != ""]; Dann
SED -I "S/$ Search/$ ersetzen/" $ Dateiname
fi

Ausgang:

Beispiel 2: Ersetzen Sie die Datei durch den Befehl 'SED' durch 'G' und 'I' Flag

Das folgende Skript funktioniert wie das vorherige Beispiel, aber die Suchzeichenfolge wird global nach dem Flag 'G' durchsucht, und die von Fall unempfindliche Suche wird für das "I" -Flag durchgeführt.

#!/Bin/Bash
# Nehmen Sie die Suchzeichenfolge
Lesen Sie -p "Geben Sie den Suchzeichenfolge ein:" Suche
# Nehmen Sie die Zeichenfolge ersetzen
Lesen Sie -p "Geben Sie die Zeichenfolge Ersetzen:" Ersetzen
Wenn [[$ Search != "" && $ ersetzen != ""]; Dann
sed -i "s/$ suche/$ ersetzen/gi" $ 1
fi

Ausgang:

Beispiel 3: Ersetzen Sie die Datei durch den Befehl 'SED' und das passende Ziffernmuster

Das folgende Skript sucht nach allen numerischen Inhalten in einer Datei und ersetzt den Inhalt durch Hinzufügen des "$" Symbol am Anfang der Zahlen.

#!/Bin/Bash
# Überprüfen Sie, ob der Befehlszeilenargumentwert existiert oder nicht
Wenn [$ 1 != ""]; Dann
# Suchen Sie alle Zeichenfolge mit Ziffern und fügen Sie $ hinzu
sed -i 's/\ b [0-9] \ 5 \ \ b/$ &/g' $ 1
fi

Ausgang:

Ersetzen Sie die Zeichenfolge in einer Datei mit 'awk' Befehl

Der 'awk ' Der Befehl ist eine weitere Möglichkeit, die Zeichenfolge in einer Datei zu ersetzen. Dieser Befehl kann die Originaldatei jedoch nicht direkt wie die 'aktualisierensed ' Befehl.

Beispiel 4: Datei mit dem Befehl 'awk' ersetzen

Das folgende Skript speichert den aktualisierten Inhalt in der Temperatur.txt Datei, die von der Originaldatei umbenannt wird.

#!/Bin/Bash
# Überprüfen Sie, ob der Befehlszeilenargumentwert existiert oder nicht
Wenn [$ 1 != ""]; Dann
# Suchen Sie die gesamte Zeichenfolge basierend auf dem Datum
awk 'sub ("02/06/2020", "12/06/2020") print' $ 1> tempel.txt && mv tempep.txt $ 1
fi

Ausgang:


Im obigen Beispiel wird 'awk' Befehl verwendet, um nach einer Zeichenfolge zu suchen "02/06/2020", Welches ist das letzte Datum in unserer Beispieldatei. Die übereinstimmende Zeichenfolge wird durch eine neue Zeichenfolge ersetzt "12/06/2020". Die Zeichenfolge, die ergibt, ob ersetzt oder nicht, wird in jeder Zeile gedruckt.

Beispiel 5: Ersetzen Sie die Zeichenfolge in der Datei mit reinem Bash -Skripting

In diesem Beispiel werden wir den gleichen Job mit einer Bash während der Schleife und eines Bash -String -Ersatzbefehls machen. Wir werden die Ausgabe an a schreiben TMP Datei und ersetzen Sie das Original am Ende des Skripts. Siehe den Code unten:

#!/Bin/Bash
Während der Lesenzeile; Tun
# Ersetzen Sie alle Fälle von Khulna durch Dhaka
echo $ line // khulna/dhaka
Erledigt < Sales.txt > /TMP/Verkauf.Ö.txt
MV /TMP /Verkauf.Ö.TXT -Verkauf.txt

Sie können sehen Khulna mit der neuen Zeichenfolge Dhaka. Die while -Schleife liest aus der Eingabedatei Verkauf.txt und schreibt in die Ausgabedatei /TMP/Verkauf.Ö.txt. Schließlich ersetzt die temporäre Ausgabedatei die Originaldatei durch die MV Befehl.

Ausgang:

Beispiel 6: Ersetzen Sie die Zeichenfolge in der Datei mit Perl One Liner

Diese Aufgabe ist tatsächlich super einfach mit Perl. Perl ist eine alte, weniger beliebte Sprache, aber äußerst mächtig. Dies kann mit einem Zeilenbefehl in der Befehlszeile Bash erfolgen:

Perl -Pi.Bak -es/Dhaka/Bogra/G 'Verkäufe.txt

-Pi.Bak fordert Perl an, die Datei an Ort und Stelle zu verarbeiten und auch eine Sicherungsdatei mit dem zu erstellen .Bak -Erweiterung. Der Ersatz wird alle Fälle von sein Dhaka für Bogra Als neuer Text. Hier sehen Sie die einfache Ausgabe dieses Befehls:

AUSGANG:

Abschluss

In diesem Artikel wurde gezeigt, wie Sie BASH -Skripte verwenden, um Zeichenfolgen in einer Datei durch Suche und Ersetzen in der Befehlszeile in Bash zu ersetzen. Es gibt viele Möglichkeiten, dies zu tun, einschließlich mit Befehlen sed, awk, perl; Sie können native Bash -Scripting mit Loops und Regex verwenden, und es gibt mehr Möglichkeiten, die hier noch nicht besprochen werden. Bash und Linux haben viele Möglichkeiten, den gleichen Job zu machen.