Antworten:
sed -e "\$aTEXTTOEND"
ist der einfachste Weg.
$
Entspricht der letzten Zeile (es ist eine normale sed
Adresse; wird 4aTEXTTOEND
nach der vierten Zeile a
eingefügt ), ist der Befehl append und TEXTTOEND
ist das, was angehängt werden soll.
sed -e '$a\NEWLINE\\'
. Ersetzen Sie NEWLINE durch eine aktuelle neue Zeile.
Keine Notwendigkeit, sed
in diesem Fall zu verwenden. Wie wäre es mit
echo "<?php" >> file
<php
" und " >
" in Klammern zu setzen und ausgewählte Inhalte auf einmal zu zitieren, sodass er wahrscheinlich wirklich ein sed
Fragment haben möchte .
sudo
, was dazu führt, dass diese Variation fehlschlägt, da echo
es sich eher um einen eingebauten Shell-Befehl als um eine ausführbare Datei handelt, die sich in$PATH
echo
ist eine eingebaute, aber auch eine ausführbare Datei in$PATH
Angenommen, Sie möchten den Dateien das End-PHP-Tag hinzufügen
sed -i '$s/$/\n?>/' file
sollte den Trick machen
In Ihrem Originalbeitrag finden Sie den Befehl all in one sed.
find . -type f -exec sed -i -e "1s/^/<?php /" -e "\$s/\$/ ?>/" {} \;
Verwenden Sie den Befehl sed 'append (a)'. Zum Beispiel, um zwei Zeilen am Ende der Datei anzuhängen:
sed -i -e '$a\
foo1 bar1\
foo2 bar2' file
Auf einfache Weise können Sie die Änderungen des Inhalts in eine bestimmte Zeile in einer Datei schreiben und vornehmen. Wenn Sie an einer bestimmten Zeilennummer etwas einfügen möchten, können Sie den folgenden Befehl verwenden:
sed -i '2i i have started' sheikh.log
Wobei 2i
- Zeile 2 und i für das Einfügen stehen. Wenn Sie in der letzten Zeile einfügen müssen, verwenden Sie $
anstelle von 2. Ich habe begonnen - einzufügender Text und sheikh.log
der Dateiname.
Wir können die Änderungen in der Zeile auch mit dem folgenden Befehl vornehmen
sed -i '2c we have started' sheikh.log
i
wird geändert zu we
.
Ich würde annehmen, dass jeder, der nach dem Einfügen / Anhängen von Text an den Anfang / das Ende einer Datei gesucht hat, wahrscheinlich auch wissen muss, wie man den anderen auch macht.
cal | \
gsed -E \
-e '1i\{' \
-e '1i\ "lines": [' \
-e 's/(.*)/ "\1",/' \
-e '$s/,$//' \
-e '$a\ ]' \
-e '$a\}'
Diese cal
Ausgabe wird mit erweiterten RegEx ( ) und 6 angewendeten "Skripten" ( ) und aus Gründen der Lesbarkeit mit Escapezeichen versehenen Zeilenumbrüchen an gnu- sed
( gsed
auf MacOS aufgerufen, das über brew.sh installiert wurde ) weitergeleitet . Die Skripte 1 und 2 werden verwendet, um "in Zeile 1 einzufügen". Die Skripte 5 und 6 werden verwendet, um "in Zeile <letzte> anzuhängen". Ich habe die Textausgaben vertikal ausgerichtet, damit der Code das wiedergibt, was im Ergebnis erwartet wird. Die Skripte 3 und 4 ersetzen (letzteres gilt nur für "line <last>"). Das Ergebnis ist die Konvertierung der Befehlsausgabe in ein gültiges JSON.-E
-e
\
1i\
$a\
{
"lines": [
" October 2019 ",
"Su Mo Tu We Th Fr Sa ",
" 1 2 3 4 5 ",
" 6 7 8 9 10 11 12 ",
"13 14 15 16 17 18 19 ",
"20 21 22 23 24 25 26 ",
"27 28 29 30 31 ",
" "
]
}
{ cat file; echo 'END OF FILE'; } > newFile
funktioniert das auch dank sh. *. (Nicht sed, aber funktioniert und einfach)