Linux lernen

Ersetzen von Strings in Bash

Ersetzen von Strings in Bash

Bash ist ein UNIX-Shell-kompatibler Befehlsprozess, dessen Hauptaufgabe darin besteht, Strings 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 hinzufügen, löschen und ersetzen, um sie an ihre Arbeit anzupassen. Dies erfordert die Kenntnis des Ersetzens von Strings in bash. Die Datenspeicherung kann je nach Art der Daten temporär oder dauerhaft sein. Die Dateizeichenfolge ist beim Ersetzen von Dateiinhalten unerlässlich.

Ersetzen von Strings in Bash

sed ist wichtig und hilft beim Ersetzen von Strings in einer Datei durch Bash-Skripte. Der String-Editor kann auf verschiedene Weise verwendet werden, um Dateiinhalte in der bash zu ersetzen. Ein alternativer, aber Sound-String-Editor ist awk, der beim Ersetzen des String-Werts aus einer Datei mit bash ins Spiel gebracht werden kann. In diesem Artikel wird anhand von Beispielen gezeigt, wie der Dateiinhalt in der bash ersetzt werden kann. Beachten Sie, dass Kenntnisse in Regex-Mustern auch beim Ersetzen von String in bash von großem Wert sein können.

Bash-String-Manipulation

Bei kleineren oder einfachen Ersetzungen ist der Sed nicht erforderlich. Bash kann die Manipulation übernehmen.

Beispielsweise:
Beim Ersetzen eines fosslinux.gif mit .mp4, sed ist nicht erforderlich.
Um den Prozess mit bash auszuführen, verwenden Sie den folgenden codierten Text:

#/bin/bash file_name="fosslinux.gif" new_extension="mp4" # Ersetzen .gif mit .mp4 generiert_file_name=$file_name/.gif/.$new_extension echo generierter_dateiname

Ersetzen von String mit sed

sed kann als Stream-Editor bezeichnet werden. Sed kann eine Zeichenfolge in Dateien ersetzen. Schauen wir uns ein Beispiel für eine Datei namens singleboardbytes an.txt mit den folgenden Informationen:
Foss Linux ist eine großartige Lernseite für jeden Linux-Benutzer. Schauen Sie sich die von Foss Linux auf ihrer Website veröffentlichten Artikel an.

Jetzt müssen wir aus unserer Datei das Wort „Seite? ˅„mit“Webseite“ und benennen Sie die Datei um in fosslinux.TXT.

Die sed-Syntax verstehen

sed -i 's/search_string/replace_string/' Dateiname sed - ist der Befehl, der bei der Ausführung der obigen Syntax verwendet wird '-ich' - wird bei der Änderung von Inhalten in der Originaldatei mit einer Ersetzungszeichenfolgenhilfe verwendet, wenn der Suchwert in der Datei vorhanden ist. 'so' - das ist der Ersatzbefehl 'Suchbegriff' - dies stellt den Zeichenfolgenwert dar, der in der Originaldatei nach Ersetzung gesucht werden soll 'replace_string' - dies stellt den Zeichenfolgenwert dar, der verwendet wird, um den gesuchten Wert zu ersetzen. Die Zeichenfolge sollte mit der Zeichenfolge übereinstimmen, die mit dem Befehl 'search_string' gefunden wurde. 'Dateiname' - Dies ist der Dateiname, auf den die Ersetzung angewendet wird.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

sed 's/site/website/g' Singleboardbytes.txt > fosslinux.TXT

String-Ersetzung mit sed

Hinweis: Sie können den obigen Befehl auch ausführen, indem Sie ihn als Bash-Skript anlegen.
Ersetzen mit -ich Befehl

Nach dem Ausführen des Befehls ist der nächste Schritt das Ersetzen mit dem replace -ich Befehl. -ich ist eine Darstellung für „in place“, was bedeutet, dass die Datei nur ersetzt wird und keine zusätzlichen Dateien erstellt werden. Führen Sie in unserem obigen Beispiel den folgenden Befehl aus:

sed -i 's/site/website/g' Singleboardbytes.TXT

Ersetzen mit dem Befehl -i

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.

Änderungen an Singleboardbytes.TXT

Die folgende Abbildung zeigt die Datei, die die im vorherigen Schritt vorgenommenen Änderungen enthält, sowohl am Namen der Datei (Singleboardbytes.txt zu fosslinux.txt) und das Wort Seite? ˅ wurde geändert in die Webseite.

Letzte Änderung nach Ausführung des sed-Befehls

Verwenden einer Variablen als Suchwerte und Ersetzungen

Mit ein wenig Interpolation können Variablen verwendet werden, um Strings 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 ähnlich sein:

tuts()  local search=$1 local replace=$2 # Beachten Sie die doppelten Anführungszeichen sed -i "s/$search/$replace/g" singleboardbytes.TXT 

Verwenden einer Variablen als Suchwerte und Ersetzungen

sed hat zwei Geschmacksrichtungen, nämlich: die 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 dem .Back-Erweiterung. Oder Sie können ein Backup mit leeren Anführungszeichen direkt nach der -i-Notation starten, 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, wird ein Fehler wie der unten gezeigte auftreten:

sed: 1: "/Users/user/path/tuts…": zusätzliche Zeichen am Ende des h-Befehls

So ersetzen Sie eine Datei und passen das Ziffernmuster mit dem Befehl sed an

Wenn Sie das Skript erfolgreich ausführen, wird eine Suche nach allen in einer Datei vorhandenen numerischen Inhalten durchgeführt file. Dann wird der Inhalt dann durch Hinzufügen von $ vor den Zahlen ersetzt.

#!/bin/bash # Überprüfen Sie, ob der Befehlszeilenargumentwert vorhanden ist oder nicht, wenn [ $1 != "" ]; dann # Suche alle Zeichenfolgen mit Ziffern und füge $ sed -i 's/\b[0-9]\5\\b/$&/g' $1 fi . hinzu

Ersetzen einer Zeichenfolge mit dem Befehl awk

In diesem Fall verwenden wir den Befehl awk anstelle des Befehls sed, 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 # Überprüfen Sie, ob der Befehlszeilenargumentwert vorhanden ist oder nicht, wenn [ $1 != "" ]; then # Suche alle Zeichenfolgen basierend auf Datum awk 'sub("02/06/2020","12/06/2020")1' $1 > temp.txt && mv temp.txt $1 fi

Fazit

Die obigen Beispiele sind für Ihren Fortschritt beim Erlernen des Ersetzens einer Zeichenfolge in Bash von entscheidender Bedeutung. Um gut darin zu sein, musst du 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 richtig befolgen.

Zu beachten ist, dass die Ausführung der Befehle manchmal einfacher zu handhaben scheint, aber Sie sollten aufpassen, dass Sie nicht von sed . verwüstet werden. Wenn Sie die falschen Befehle eingeben, beschädigen Sie Ihren Computer und verursachen mehr Probleme wie Datenverlust data. Kopieren Sie daher sicherheitshalber den Code immer so, wie er ist, und fügen Sie ihn in Ihr Terminal ein. Dies verhindert Rechtschreibfehler, die Ihr Gerät beschädigen könnten. Wir hoffen, dass dieser Artikel Ihnen geholfen hat, mithilfe dieses Artikels zu lernen, wie Sie eine Zeichenfolge in bash ersetzen.

Steuern und verwalten Sie Mausbewegungen zwischen mehreren Monitoren in Windows 10
Dual-Display-Maus-Manager lässt Sie die Mausbewegung zwischen mehreren Monitoren steuern und konfigurieren, indem Sie ihre Bewegungen in der Nähe der ...
Mit WinMouse können Sie die Mauszeigerbewegung auf einem Windows-PC anpassen und verbessern improve
Wenn Sie die Standardfunktionen Ihres Mauszeigers verbessern möchten, verwenden Sie Freeware WinMouse. Es fügt weitere Funktionen hinzu, damit Sie das...
Linker Mausklick funktioniert nicht unter Windows 10
Wenn Sie eine dedizierte Maus mit Ihrem Laptop oder Desktop-Computer verwenden, aber die linker Mausklick funktioniert nicht unter Windows 10/8/7 aus ...