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

Fügen Sie nach Musterübereinstimmungen mithilfe von Linux-Shell-Skript mehrere Datenzeilen in eine Datei ein

Haben Sie einen Code, der in mehrere Dateien eingefügt werden muss? Dann hast du genau wie ich eine schwere Zeit! Ich arbeitete an einer in cpanel gehosteten Website mit zahlreichen HTML-Dateien, in die jeweils ein Popup-Code eingefügt werden musste. Die Anzahl der HTML-Dateien betrug 425. Es war ein Albtraum, dies unter Windows zu tun. Aber hey, habe ich dir nicht gesagt, dass ich einen klügeren Weg gefunden habe, es zu tun? Kasse unten!

Schritt 1:Dateien von CPANEL kopieren

Kopieren Sie alle Dateien von cpanel mit WinSCP auf Ihr lokales Windows-System.

Schritt 2:Dateien von Windows nach Linux kopieren

Kopieren Sie dann die HTML-Dateien auf einen Linux-Server. Wenn Sie keinen eigenen Server haben, können Sie mit Virtualbox ein Linux-System virtuell auf Ihrem Desktop ausführen. Sehen Sie sich hier an, wie Sie Virtualbox installieren.

Schritt 3:Verwenden Sie den Befehl „sed“, um den Code einzufügen

Verwenden Sie den folgenden sed-Befehl, um Ihren Code aus einer anderen Datei einzufügen. Beispiel:Daten, die aus der Datei „add.txt“ in „input.txt“ eingefügt werden sollen. Jetzt wäre der Befehl :

Input.txt

abcd
efgh
ijkl
mnop
qrst

add.txt

uvwx
yzab
cdef
ghij
klmn
$sed '/ijkl/r add.txt' input.txt

Der Befehl würde den Inhalt von add.txt zu input.txt hinzufügen, nachdem das Muster „ijkl“ übereinstimmt. Die Ausgabe wäre also:

abcd
efgh
ijkl
uvwx
yzab
cdef
ghij
klmn
mnop
qrst

Der obige Befehl würde den Inhalt auf dem Terminal ausgeben. Um die Datei mit dem Inhalt zu aktualisieren, verwenden Sie dann den Befehl „-i“ mit dem Befehl sed wie unten gezeigt:

$sed -i '/ijkl/r add.txt' input.txt

Wenn Sie Inhalte direkt eingeben und nicht aus der Datei einfügen müssen, können Sie den folgenden Befehl verwenden:

$sed -i 's/.*ijkl.*/uvwx\n&/' input.txt
abcd
efgh
ijkl
uvwx
mnop
qrst

Schritt 4:Führen Sie den obigen Befehl in einer Schleife mit der Anzahl der Dateien aus

Wechseln Sie in das Verzeichnis, in dem Dateien geändert werden müssen. Verwenden Sie die „for-Schleife“, um die Daten mit dem folgenden Befehl einzufügen:

for i in *;
do
    $sed '/ijkl/r add.txt' $i
done

Im obigen Code steht * für die Dateien. Fügen Sie für jede Datei als $i den Inhalt aus der Datei add.txt hinzu, nachdem das Muster „ijkl“ gefunden wurde.

Schritt 5:Kopieren Sie die Dateien von Linux nach Windows nach Cpanel zurück

Der letzte Schritt besteht darin, die bearbeiteten Dateien vom Linux-Server auf das lokale Windows-System zurückzukopieren. Verwenden Sie dann scp oder ftp, um Dateien vom lokalen Windows-System nach cpanel zu kopieren.


Linux
  1. Wie fügt man Daten an den Puffer im Shell-Skript an?

  2. Linux – Datenwiederherstellung nach dem Kopieren der Datei auf das Blockgerät?

  3. Linux-Shell-Skript zum Hinzufügen führender Nullen zu Dateinamen

  4. So suchen Sie nach Dateien mit Regex im Linux-Shell-Skript

  5. Wie suche ich nach Inhalten nach dem Muster?

So teilen Sie eine große Archivdatei mit dem Split-Befehl in Linux in mehrere kleine Dateien auf

So teilen Sie eine große Archivdatei mit dem Split-Befehl in Linux in mehrere kleine Dateien auf

So teilen Sie Dateien lokal unter Linux mit NitroShare

8 Methoden zum gleichzeitigen Umbenennen mehrerer Dateien in Linux

So synchronisieren Sie Dateien in zwei Richtungen mit Osync-Skript in Linux

So erstellen Sie unter Linux Dateien, die nach Zeilen in einer Textdatei benannt sind