Ich habe eine Zeile mit Leerzeichen am Anfang, zum Beispiel "Hallo Welt". Ich möchte diese Zeile in eine bestimmte Zeile in einer Datei einfügen. Fügen Sie beispielsweise "Hallo Welt" in die nächste Datei ein
hello
world
Ergebnis:
hello
hello world
world
Ich benutze dieses sed-Skript:
sed -i "${line} i ${text}" $file
Das Problem ist, dass ich meine neue Zeile ohne Leerzeichen bekomme:
hello
hello world
world
a\ text
fügt den Text mit 4 Räumen an der Front.Sie benötigen nur einen,
\
um mehrere Leerzeichen wie dieses einzugebensed -i "${line} i \ ${text}" $file
quelle
$ a=" some string " $ echo -e "hello\nworld" hello world $ echo -e "hello\nworld" | sed "/world/ s/.*/${a}.\n&/" hello some string . world
Das
.
wurde in der obigen Substitution hinzugefügt, um zu demonstrieren, dass die nachfolgenden Leerzeichen erhalten bleiben. Verwenden Siesed "/world/ s/.*/${a}\n&/"
stattdessen.quelle
Dies kann durch Aufteilen des Ausdrucks wie folgt erfolgen:
sed -i $file -e '2i\' -e " $text"
Dies ist eine GNU-Erweiterung zur einfacheren Skripterstellung.
quelle