GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden von Sed-, Ex- und Perl-Befehlen zum Suchen und Ersetzen eines Textes in Linux

Frage:  Ich möchte einen Text durch einen Link im Anchor-Tag einer HTML-Datei ersetzen. Die Herausforderung besteht darin, dass das Projekt Hunderte solcher HTML-Dateien enthält und das manuelle Ersetzen eines Textes in all diesen Dateien keine kluge Methode ist. Die Frage ist also, wie kann ich dasselbe mit einem einzigen Befehl unter Linux tun?

Lösung:

Mit sed Befehl unter Linux:

sed -i 's/#\(.*logo\)/domain.ca\1/' $file

Der obige Befehl sucht nach der Zeile, die das Muster logo enthält und ersetzt „#“ durch einen Link (z. B. eine domain.ca)

Sie können auch mehrere Dateien für den obigen Befehl übergeben, wie unten gezeigt.

Eine andere Variation des obigen Befehls ist:

sed -i '/logo.png/ s/#/domain.ca/' *.html

Mit perl Befehl:

perl -i -pe 's/#/domain.ca/ if /logo.png/' about-us.html

Der Befehl ist sehr einfach – durchsuchen Sie den Text und ersetzen Sie ihn durch eine bestimmte Zeichenfolge, wenn und nur wenn er eine übereinstimmende Zeichenfolge in dieser Zeile der Datei findet.

Alle obigen Befehle haben die gleiche Aufgabe, aber sie unterscheiden sich nur darin, wie Sie Ihren regulären Ausdruck eingeben.

Verwenden Sie Vim in ex Modus (kann nicht mit mehreren Dateien verwendet werden):

ex -sc '/logo/s/#/http:\/\/domain.ca\//|x' about-us.html

Im obigen Befehl wird der reguläre Ausdruck „/logo/s/#/http:\/\/domain.ca\//|x ‘ besteht aus ‘s’ und ‘x’ – wobei ‘s’ für ersetzen und ‘x’ für Speichern und Schließen der Datei steht.

Hinweis:Der obige Befehl verwendet vim , Sie können nicht mehrere Dateien übergeben. Sie müssen diesen Befehl für jede zu ersetzende Datei manuell ausführen.


Linux
  1. Der Linux-Sed-Befehl:Verwendung und Beispiele

  2. Linux-Befehle:jobs, bg und fg

  3. Verwenden von sed zum Suchen und Ersetzen von Textdateien in Linux

  4. Verwenden von „sed“ zum Suchen und Ersetzen?

  5. Verwenden von grep und sed zum Suchen und Ersetzen einer Zeichenfolge

So verwenden Sie sed zum Suchen und Ersetzen von Zeichenfolgen in Dateien

So verwenden Sie den SED-Befehl zum Suchen und Ersetzen von Zeichenfolgen in Dateien

Finden Sie Text in Dateien unter Linux mit grep

50 einfache und nützliche Beispiele für den Find-Befehl in Linux

So finden und ersetzen Sie Text in Vim

Unix Sed Tutorial:Suchen und Ersetzen von Text in einer Datei mit RegEx