Angenommen, ich habe eine Textdatei wie diese:
# custom content section
a
b
### BEGIN GENERATED CONTENT
c
d
### END GENERATED CONTENT
Ich möchte den Teil zwischen den GENERATED CONTENT
Tags durch den Inhalt einer anderen Datei ersetzen .
Was ist der einfachste Weg, dies zu tun?
bash
unix
shell-script
textfiles
text-processors
Smokris
quelle
quelle
sed
kann so viel mehr als nurs/.../...
!r insert_file
Befehl muss das Letzte in seiner Zeile sein. Beachten Sie, dass danach weder Leerzeichen noch Kommentare zulässig sind. Der Code wurde unter Verwendung von GNUsed
mit--posix
aktivierter Option getestet und funktionierte wie erwartet, daher sollte er mit allen posix-kompatiblen funktionierensed
.output=$(sed -e "..." existing_file)
) erfassen und dann in einem zweiten Durchgang (z. B.echo "$output" > existing_file
) ersetzen müssen, da die Umleitung in eine Datei, aus der Sie lesen, dazu führt, dass sie abgeschnitten wird, bevor der Inhalt gelesen wird.quelle
Warnung: Dies ist definitiv nicht der einfachste Weg, dies zu tun. (EDIT: bash funktioniert; POSIX grep ist auch in Ordnung)
Wenn sich der Haupttext in der Datei "main" befindet und sich der generierte Inhalt in der Datei "gen" befindet, können Sie Folgendes tun:
quelle
main
zum Schreiben geöffnet und gelöscht, bevor sie von cat gelesen wird.quelle
r FILE2
Sie können sagenr !command
, aus einem anderen Skript zu lesen.