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

So suchen und ersetzen Sie Text, Wort oder Zeichenfolge in einer Datei

Wenn Sie einen tieferen Einblick in das Ökosystem der Linux-Betriebssystemumgebung erhalten, werden Sie feststellen, dass die integrierten Befehle ausreichen, um die meisten unserer Computerprobleme zu lösen.

Ein solches Problem ist die Notwendigkeit, Text, Wort oder Zeichenfolge in einer Datei zu finden und zu ersetzen, insbesondere wenn Sie sich in einer Serverumgebung befinden. Eine Lösung für dieses Problem ermöglicht es Ihnen, lästige Probleme wie das Aktualisieren der „/etc/apt/sources.list“ zu behandeln ”-Datei nach einem erfolgreichen Linux-System-Upgrade.

Erstellen der Testtextdatei unter Linux

Erstellen Sie eine Textdatei mit einem Namen wie „test.txt“. “ und füllen Sie es mit Text, Wörtern oder Zeichenketten. Lassen Sie diese Datei im selben Pfad wie Ihre Terminalinstanz liegen.

$ nano test.txt
OR
$ vi test.txt 

Wir werden den cat-Befehl verwenden, um die Änderungen an unserer erstellten Testdatei flexibel zu notieren.

$ cat test.txt

Verwenden von Sed zum Suchen und Ersetzen von Text, Wörtern oder Zeichenfolgen in einer Datei

Die Stärke dieses Stream-Editors liegt in seiner Leichtigkeit bei der Durchführung grundlegender Transformationen von Eingabeströmen. Der Befehl sed bietet einen schnellen, einfachen und zeitlosen Ansatz zum Suchen und Ersetzen von gezieltem Text, Wörtern oder Zeichenkettenmustern in einer Datei.

Erstes Vorkommen von Text, Wort oder Zeichenfolge in Datei suchen und ersetzen

Aus unserer erstellten Testdatei aktualisieren wir alle Instanzen des Wortes „LinuxShellTips “ mit der Alternative „diese Seite “. Die Syntax des sed-Befehls Wir werden diese einfache Aufgabe wie folgt ausführen:

$ sed -i 's/[THE_OLD_TERM]/[THE_NEW_TERM]/' [TARGETED_FILE] 

Mit Bezug auf den obigen sed-Befehl Verwendung und Syntax können wir die „LinuxShellTips unserer Testdatei ersetzen “ mit „diese Website ” Begriff wie folgt:

$ sed -i 's/LinuxShellTips/this site/' test.txt

Wir können jetzt den cat-Befehl verwenden um eine Vorschau der oben vorgeschlagenen Änderungen an unserer Testdatei anzuzeigen, um festzustellen, ob wesentliche Änderungen vorgenommen wurden.

$ cat test.txt

Wie Sie sehen können, sind die ersten beiden Vorkommen des Wortes „LinuxShellTips “ wurden durch den Ausdruck „diese Website“ ersetzt “.

Alle Vorkommen von Text, Wort oder Zeichenfolge in Datei suchen und ersetzen

Obwohl der obige Befehl alle gezielten Wortmuster in unserer Testdatei ersetzt hat, ist seine Verwendung in den meisten Fällen selektiv. Der Befehl funktioniert am besten für kleine Dateien, da in großen Dateien nur die ersten paar Vorkommen eines gezielten Wortmusters von seinem „Suchen und Ersetzen“ profitieren könnten ’ Fähigkeiten.

Um alle Vorkommen eines Wortmusters in einer bearbeitbaren Datei zu finden und zu ersetzen, sollten Sie sich an den folgenden sed-Befehl halten Syntax.

$ sed -i 's/[THE_OLD_TERM]/[THE_NEW_TERM]/g' [TARGETED_FILE]    

Wie Sie bemerkt haben, das 'g' in der obigen Befehlssyntax zum Suchen und Ersetzen fungiert als globale Variable, sodass alle globalen Vorkommen eines Begriffs in einer Zieldatei berücksichtigt werden.

$ sed -i 's/this site/LinuxShellTips/g' test.txt

Der obige Befehl findet alle globalen Vorkommen des Begriffs „diese Website “ und ersetzt ihn durch den Begriff „LinuxShellTips “.

Verwenden von Awk zum Suchen und Ersetzen von Text, Wörtern oder Zeichenfolgen in Dateien

Wenn Sie mit dem Befehlszeilendienstprogramm awk vertraut sind, dann wissen Sie, dass seine leistungsstarken Metriken für die Skriptsprache es zu einem Profi in der Textverarbeitung machen. Linux-Systemadministratoren und professionelle Benutzer finden dieses Tool effektiv bei der Datenextraktion und Berichterstellung.

Der awk-Befehl Syntax für eine einfache Suchen-und-Ersetzen-Operation sieht wie das folgende Snippet aus:

$ awk '{gsub("[THE_OLD_TERM]","[THE_NEW_TERM]"); print}' [TARGETED_FILE]

In der obigen Syntax ersetzt awk THE_OLD_TERM von THE_NEW_TERM in der TARGETED_FILE und drucken Sie den resultierenden Dateiinhalt auf dem Systemterminal aus.

Lassen Sie uns einen praktischen Ansatz verfolgen:

$ awk '{gsub("Linux","ubuntu"); print}' test.txt

Mit den dynamischen Funktionalitäten der beiden sed und awk Befehlstools sollten Sie jetzt Text-, Wort- oder Zeichenfolgenmuster in einer Zieldatei finden, ersetzen und überschreiben. Diese Tools geben einem Systembenutzer die erforderliche Flexibilität, während er sich auf einer Befehlszeilenschnittstelle befindet.


Linux
  1. So verwenden Sie Awk und reguläre Ausdrücke zum Filtern von Text oder Zeichenfolgen in Dateien

  2. Wie finde ich nicht übereinstimmende Klammern in einer Textdatei?

  3. Wie finde ich den Typ einer Img-Datei und mounte sie?

  4. Wie finde ich Zeilenenden in einer Textdatei heraus?

  5. Finden Sie passenden Text und ersetzen Sie die nächste Zeile

Wie man Textdateien unter Linux vergleicht und zusammenführt

So finden Sie eine Zeichenfolge in einer Datei unter Linux

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

So finden Sie Dateien, die eine bestimmte Textzeichenfolge in Linux enthalten

So finden und ersetzen Sie Text in Vim

So verwenden Sie Sed zum Suchen und Ersetzen einer Zeichenfolge in einer Datei