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
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.