Win/Linux Leerzeichen am Zeilenanfang einer Textdatei einfügen

Ich hatte öfters das Problem, dass ich in einem Dokuwiki längere Texte/Listings als Textbox einfügen wollte. In Dokuwiki wird eine Textbox mit 2 vorangestellten Leerzeichen vor einem Text erzeugt.

So war ich auf der Suche nach einer Lösung für Linux und für Windows, da ich auf beiden Systemen unterwegs bin. Eine mögliche Lösung für Windows folgt gleich, die Linux-Variante findet Ihr weiter unten.

Windows
CMD
Unter Windows gibt es dafür den „For /F“-Befehl.
In folgendem Beispiel wird eine Textdatei mit 2 vorangestellen Leerzeichen pro Zeile ausgegeben:

Zu beachten ist hier die Anzahl der Leerzeichen zwischen „@echo %i“. Ein Leerzeichen ist Standard und hat keine Auswirkungen. Möchte man -wie in meinem Beispiel- 2 Leerzeichen an Zeilenanfang haben, so muss man 3 Leerzeichen vor dem %i einfügen.
Um die Ausgabe weiterverwenden zu können, kann man diese in eine Datei umleiten:

Um nicht den Umweg über eine zweite Datei gehen zu müssen, kann man aus der Konsole auch gleich die Ausgabe in die Zwischenablage übergeben:

Die Klammern um den „for“-Befehl sind wichtig, da sonst alle Zeilen der Reihe nach an die Zwischenablage übergeben werden und sich dabei gegenseitig überschreiben.
Eine Möglichkeit den Zwischenspeicher in der Konsole auszulesen ist mir bis dato noch nicht bekannt.
Powershell
Auch mit der Powershell ist es möglich.
ein Inhalt aus einer Datei kann mit „Get-Content Dateiname“ ausgelesen werden und mit einer Pipe „|“ zur weiteren Bearbeitung weitergereicht werden.

Übergeben der Ausgabe in eine neue Datei:

Übergabe an die Zwischenablage funktioniert mit:

Mit der Funktion Get-ClipboardText (siehe meinen Blogeintrag) können Inhalte der Zwischenablage direkt bearbeitet und wieder in die Zwischenablage zurück geschrieben werden:
Der erste Versuch dies mit

zu realisieren scheitert daran, dass scheinbar der Zeilenumbruch nicht erkannt wird.
Wird aber der Inhalt der Zwischenablage in eine Datei geschrieben und diese wiederum ausgelesen, dann funktioniert das Ganze.
Als Workaround kann ich aktuell nur diese unschöne Zeile anbieten:

Ich lese hier die Zwischenablage aus und schreibe den Inhalt in die Datei „clip.txt“ im Temp-Verzeichnis. Danach wird der Inhalt dieser Datei bearbeitet und wieder in die Zwischenablage geschrieben. Zum Schluss wird die Datei „clip.txt“ wieder gelöscht.
Wie gesagt: unschön, aber aktuell das Einzige, das ich anbieten kann.

Linux
Unter Linux kann das mit dem sed-Befehl erledigen.

Zu beachten sind hier die Leerzeichen zwischen den letzten beiden „/“ des sed-Befehls.
Die Übergabe in eine Datei erfolgt mit:

Mit einem installiertem„xclip“ kann man auch hier die Ausgabe gleich in die Zwischenablage eines X-Window-System übergeben.

Hin und wieder musste ich den „cat/sed“-Befehl in Klammern setzen, da sich sonst die Inhalte der Zeilen gegenseitig überschreiben; es lies sich aber nicht replizieren.

Um nicht den Umweg über die Textdatei gehen zu müssen, kann man auch den Inhalt der Zwischenablage direkt bearbeiten und wieder zurückschreiben.

Linux Vim
Man kann die gleiche sed-Syntax auch direkt im vim-Editor verwenden, sollte man von Inhalte aus dem Editor einfügen wollen.
Öffnen der Datei:

denn einfach volgenden Befehl eingeben: