Bash ist ein UNIX-Shell-kompatibler Befehlsprozess, dessen Hauptaufgabe darin besteht, Zeichenfolgen zu manipulieren, die in einer Shell-Umgebung ausgeführt werden. Programmierer werden manchmal aufgefordert, an verschiedenen Dateien zu arbeiten. Sie können Teile oder die gesamte Datei entsprechend ihrer Arbeit hinzufügen, löschen und ersetzen. Dies erfordert das Wissen, Strings in Bash zu ersetzen. Die Datenspeicherung kann je nach Art der Daten temporär oder dauerhaft erfolgen. Datei-String ist wichtig, wenn Dateiinhalte ersetzt werden.
String in Bash ersetzen
gesendet ist wichtig und praktisch, um Zeichenfolgen in einer Datei durch Bash-Skripte zu ersetzen. Der String-Editor kann auf verschiedene Arten verwendet werden, um Dateiinhalte in der Bash zu ersetzen. Ein alternativer, aber solider String-Editor ist awk, der ins Spiel gebracht werden kann, wenn der String-Wert aus einer Datei mit Bash ersetzt wird. Dieser Artikel zeigt anhand von Beispielen, wie der Dateiinhalt in der Bash ersetzt werden kann. Beachten Sie, dass Kenntnisse in Regex-Mustern auch beim Ersetzen von Zeichenfolgen in Bash von großem Wert sein können.
Bash-String-Manipulation
Bei geringfügigen oder einfachen Ersetzungen ist die sed nicht erforderlich. Bash kann die Manipulation übernehmen.
Zum Beispiel:
Wenn Sie eine fosslinux.gif-Datei durch eine .mp4-Datei ersetzen, ist sed nicht erforderlich.
Um den Prozess mit Bash auszuführen, verwenden Sie den folgenden codierten Text:
#/bin/bash file_name="fosslinux.gif" new_extension="mp4" # Replace .gif with .mp4 generated_file_name=${file_name/.gif/.$new_extension} echo $generated_file_name
String mit sed ersetzen
sed kann als Stream-Editor bezeichnet werden. Sed kann eine Zeichenfolge in Dateien ersetzen. Sehen wir uns ein Beispiel für eine Datei namens singleboardbytes.txt an, die die folgenden Informationen enthält:
Foss Linux ist eine großartige Lernseite für jeden Linux-Benutzer. Sehen Sie sich Artikel an, die von Foss Linux auf ihrer Website veröffentlicht wurden.
Jetzt müssen wir aus unserer Datei das Wort „site“ ersetzen “ mit „Website “ und benennen Sie die Datei in fosslinux.txt um .
Die sed-Syntax verstehen
sed -i 's/search_string/replace_string/' filename sed – is the command used in the execution of the above syntax ‘-i’ – used in the modification of contents in the original file with a replacement string aid whenever the search value exists in the file. ‘s’ – this is the substitute command ‘search_string’ – this represents the string value that is to be searched for replacement in the original file ‘replace_string’ – this represents the string value that is used to replace the searched value. The string should match the string found by the ‘search_string’ command. ‘filename’ – this is the filename whereby the replacement will be applied.
Führen Sie den folgenden Befehl in Ihrem Terminal aus:
sed 's/site/website/g' singleboardbytes.txt > fosslinux.txt
Hinweis:Sie können den obigen Befehl auch ausführen, indem Sie ihn als Bash-Skript anlegen.
Ersetzen mit dem -i Befehl
Nach dem Ausführen des Befehls ist der nächste Schritt das Ersetzen mit -i Befehl. -ich ist eine Darstellung für „an Ort und Stelle“, was bedeutet, dass die Datei nur ersetzt wird und keine zusätzlichen Dateien erstellt werden. Führen Sie unter Verwendung unseres obigen Beispiels den folgenden Befehl aus:
sed -i 's/site/website/g' singleboardbytes.txt
In der Abbildung unten sehen Sie ein Ausrufezeichen mit der Aufschrift „Die Datei „/home/tuts/singleboardbytes.txt auf der Festplatte geändert“. dies zeigt, dass die Änderungen erfolgreich vorgenommen wurden.
Die folgende Abbildung ist die Datei, die die Änderungen enthält, die im vorherigen Schritt vorgenommen wurden, sowohl am Namen der Datei (singleboardbytes.txt in fosslinux.txt) als auch am Wort site wurde auf die Website geändert .
Eine Variable als Such- und Ersetzungswert verwenden
Mit ein wenig Interpolation können Variablen verwendet werden, um Zeichenfolgen zu ersetzen. Das erste sed-Argument muss in diesem Fall doppelte Anführungszeichen anstelle von einfachen Anführungszeichen verwenden. Ihr Code wird beispielsweise dem folgenden ähneln:
tuts() { local search=$1 local replace=$2 # Note the double quotes sed -i "s/${search}/${replace}/g" singleboardbytes.txt }
sed hat zwei Varianten, nämlich:das FreeBSD und der Linux sed . Die Linux-Distributionen verwenden die Linux-Sed, während OS X-Benutzer die FreeBSD-Sed verwenden. Diese Geschmacksrichtungen sind ziemlich unterschiedlich, und daher kann man keine Befehle von einer sed-Variante auf eine andere übertragen.
Wenn Sie beispielsweise den Inhalt der Datei mit FreeBSD ersetzen, sollte ein Backup mit der Erweiterung .bak durchgeführt werden. Oder Sie können eine Sicherung mit leeren Anführungszeichenpaaren direkt nach der Notation -i initiieren, wie in der folgenden Bash-Syntax gezeigt:
tuts() { local search=$1 local replace=$2 sed -i "" "s/${search}/${replace}/g" singleboardbytes.txt }
Wenn während der Verwendung von FreeBSD kein Backup erstellt wird, wie im obigen Syntaxcode dargestellt, tritt ein Fehler wie der unten gezeigte auf:
sed: 1: "/Users/user/path/tuts ...": extra characters at the end of h command
Wie man eine Datei ersetzt und das Ziffernmuster mit dem Befehl sed abgleicht
Wenn Sie das Skript erfolgreich ausführen, wird nach allen in einer Datei vorhandenen numerischen Inhalten gesucht. Dann wird der Inhalt durch das Hinzufügen von $ vor den Zahlen ersetzt.
#!/bin/bash # Check the command line argument value exists or not if [ $1 != "" ]; then # Search all string containing digits and add $ sed -i 's/\b[0-9]\{5\}\b/$&/g' $1 fihinzufügen
Ersetzen eines Strings mit dem awk-Befehl
In diesem Fall verwenden wir den awk-Befehl anstelle des sed-Befehls, um den Inhalt einer Datei zu ersetzen. Der Unterschied zwischen diesen Befehlen besteht darin, dass der Befehl sed die Originaldatei direkt aktualisiert, was beim Befehl awk nicht der Fall ist.
#!/bin/bash # Check the command line argument value exists or not if [ $1 != "" ]; then # Search all string based on date awk '{sub("02/06/2020","12/06/2020")}1' $1 > temp.txt && mv temp.txt $1 fi
Schlussfolgerung
Die obigen Beispiele sind entscheidend für Ihren Fortschritt beim Erlernen des Ersetzens einer Zeichenfolge in Bash. Um gut darin zu sein, müssen Sie daher regelmäßig üben. Das Suchen und Ersetzen von Zeichenfolgen in einer Datei mag komplex erscheinen, aber Sie werden feststellen, dass es viel einfacher zu handhaben ist, wenn Sie unsere Richtlinien korrekt befolgen.
Zu beachten ist, dass das Ausführen der Befehle manchmal überschaubarer erscheinen mag, aber Sie sollten darauf achten, kein Chaos durch sed anzurichten. Wenn Sie die falschen Befehle eingeben, beschädigen Sie Ihren Computer und verursachen weitere Probleme wie Datenverlust. Kopieren Sie daher sicherheitshalber den Code immer so, wie er ist, und fügen Sie ihn in Ihr Terminal ein. Dies verhindert Rechtschreibfehler, die Ihre Maschine beschädigen könnten. Wir hoffen, dass dieser Artikel Ihnen dabei geholfen hat, mithilfe dieses Artikels zu lernen, wie man eine Zeichenfolge in Bash ersetzt.