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

Einfügen einer Datei in eine andere Datei nach dem ersten Auftreten eines Musters?

Ich möchte den Inhalt von Datei1 nach einem passenden MUSTER in Datei2 einfügen. Ich möchte es nur nach dem ersten Auftreten des MUSTERS tun.

Ich würde gerne wissen, welche Änderung ich am folgenden Befehl für meine Bedürfnisse vornehmen muss.

sed -i "/PATTERN/r file1" file2

Akzeptierte Antwort:

sed '/PATTERN/{
       r file1
       :a
       n
       ba
     }' file2

:a , n , ba ist nur ein Zyklus, der den gesamten Dateiinhalt nach dem MUSTER bis zum Ende ausdruckt. und beachten Sie, dass diese 6 Zeilen nur ein Befehl sind, aber ein Zeilenumbruch erforderlich ist, um den nächsten sed-Befehl nach r abzugrenzen , : und b .

zusätzliche Informationen von info sed :

`n'
     If auto-print is not disabled, print the pattern space, then,
     regardless, replace the pattern space with the next line of input.
     If there is no more input then `sed' exits without processing any
     more commands.

`: LABEL'
     [No addresses allowed.]

     Specify the location of LABEL for branch commands.  In all other
     respects, a no-op.

`b LABEL'
     Unconditionally branch to LABEL.  The LABEL may be omitted, in
     which case the next cycle is started.

Linux
  1. Linux – Was bedeutet ein Punkt nach den Dateiberechtigungsbits?

  2. Die Bash‘?

  3. Wie schreibe ich eine Datei in eine andere?

  4. Ausgabe nach Stdout und gleichzeitig Grep in eine Datei?

  5. Nur den Teil einer Linie nach einem übereinstimmenden Muster zurückgeben?

Wie speichere ich die Ausgabe von SHOW PROCESSLIST in einer Datei in MySQL?

Werkzeug, um die Zeilen in einer Datei zu erhalten, die nicht in einer anderen sind?

Wie kopiert man eine Datei aus einem anderen Verzeichnis in das aktuelle?

Den Inhalt einer Datei in die Zwischenablage kopieren, ohne den Inhalt anzuzeigen?

Wie zähle ich die Anzahl der Zeilen in einer Datei nach einem Grep-Match?

Was bedeutet ein Punkt nach den Dateiberechtigungsbits?