{ cat file; echo 'END OF FILE'; } > newFile funktioniert das auch dank sh. *. (Nicht sed, aber funktioniert und einfach)
4
ein einfacher echo "Cool Text" >> filesollte auch den Trick machen.
Danpe
Antworten:
93
sed -e "\$aTEXTTOEND" ist der einfachste Weg.
Wie es funktioniert
$Entspricht der letzten Zeile (es ist eine normale sedAdresse; wird 4aTEXTTOENDnach der vierten Zeile aeingefügt ), ist der Befehl append und TEXTTOENDist das, was angehängt werden soll.
Das stimmt, aber Sie können sich vorstellen, dass der Anwendungsfall des OP darin besteht, die Datei mit " <php " und " >" in Klammern zu setzen und ausgewählte Inhalte auf einmal zu zitieren, sodass er wahrscheinlich wirklich ein sedFragment haben möchte .
dmckee
2
Auch wenn Sie dies tun und keine neue Zeile möchten, verwenden Sie echo -n
Vinko Vrsalovic
2
Ich rate nicht gern. Jedes Mal, wenn ich es versuche, liege ich falsch.
4
Ein weiterer Grund, warum die akzeptierte Antwort nützlicher ist, ist das Voranstellen von sudo, was dazu führt, dass diese Variation fehlschlägt, da echoes sich eher um einen eingebauten Shell-Befehl als um eine ausführbare Datei handelt, die sich in$PATH
Tony Cesaro,
@ TonyCesaro: echoist eine eingebaute, aber auch eine ausführbare Datei in$PATH
Zan Lynx
24
Angenommen, Sie möchten den Dateien das End-PHP-Tag hinzufügen
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.logder Dateiname.
Wir können die Änderungen in der Zeile auch mit dem folgenden Befehl vornehmen
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.
Diese calAusgabe wird mit erweiterten RegEx ( ) und 6 angewendeten "Skripten" ( ) und aus Gründen der Lesbarkeit mit Escapezeichen versehenen Zeilenumbrüchen an gnu- sed( gsedauf 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\
Obwohl ich nicht über Ihre Frage abgestimmt habe, haben wir bereits mehrere Antworten, einschließlich einer akzeptierten, die das gewünschte Ergebnis belegen.
Jeff Schaller
@ JeffSchaller Die Stack Exchange-Community ist kein Forum. Sein Zweck geht über die Unterstützung der Freigabe des OP hinaus. Ziel ist es, die globale Wissensbasis mit vielen Optionen auszustatten, auf die Suchende bei der Suche nach Antworten stoßen können. Der Grund für den Titel meiner Antwort ist, dass die Nutzer den Nutzen dieser Antwort erkennen, bevor sie überhaupt auf das Google-Ergebnis klicken.
{ cat file; echo 'END OF FILE'; } > newFile
funktioniert das auch dank sh. *. (Nicht sed, aber funktioniert und einfach)echo "Cool Text" >> file
sollte auch den Trick machen.Antworten:
sed -e "\$aTEXTTOEND"
ist der einfachste Weg.Wie es funktioniert
$
Entspricht der letzten Zeile (es ist eine normalesed
Adresse; wird4aTEXTTOEND
nach der vierten Zeilea
eingefügt ), ist der Befehl append undTEXTTOEND
ist das, was angehängt werden soll.quelle
sed -e '$a\NEWLINE\\'
. Ersetzen Sie NEWLINE durch eine aktuelle neue Zeile.Keine Notwendigkeit,
sed
in diesem Fall zu verwenden. Wie wäre es mitquelle
<php
" und ">
" in Klammern zu setzen und ausgewählte Inhalte auf einmal zu zitieren, sodass er wahrscheinlich wirklich einsed
Fragment haben möchte .sudo
, was dazu führt, dass diese Variation fehlschlägt, daecho
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
sollte den Trick machen
quelle
In Ihrem Originalbeitrag finden Sie den Befehl all in one sed.
quelle
Verwenden Sie den Befehl sed 'append (a)'. Zum Beispiel, um zwei Zeilen am Ende der Datei anzuhängen:
quelle
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:
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 undsheikh.log
der Dateiname.Wir können die Änderungen in der Zeile auch mit dem folgenden Befehl vornehmen
i
wird geändert zuwe
.quelle
Erstes und Letztes
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.
Erläuterung
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\
Ausgabe
quelle