Wie hängt man etwas an die erste Zeile einer Datei an?

Wie hängt man etwas an die erste Zeile einer Datei an?

Wie kann man mit sed die gesamte erste Zeile einer Datei durch diese erste Zeile plus zusätzlichen Text ersetzen? Wie kann ich beispielsweise -fooan eine Datei anhängen, die nur eine Zeile enthält?

testfileInhalt beginnt:

some-text

testfileInhalt Ende:

some-text-foo

Antwort1

Wie hängt man etwas an die erste Zeile einer Datei an?

Wie können Sie sed verwenden, um die gesamte erste Zeile einer Datei durch diese erste Zeile plus zusätzlichen Text zu ersetzen?

Hier ist eine weitere Möglichkeit, mit SED unter Windows eine Zeichenfolge an das Ende der Zeile 1 anzuhängen und sie dann für EOL-Zeichen wieder in das DOS-Format zu konvertieren, also CRLF statt LF ...

Erster Befehl (Zeichen -foonur an das Ende der ersten Zeile anhängen)

SED -i "1 s|$|-foo|" "C:\Path\testfile.txt"

Zweiter Befehl (EOL zurück in Wagenrücklauf-Zeilenvorschub umwandeln)

SED -i "s/$/\r/" "C:\Path\testfile.txt"

Antwort2

sed '1{s/$/-foo/}' file

1 für die erste Zeile, Sie können num,numdamit einen Bereich zuweisen, z. B. 3,5 ändert Zeile 3 in Zeile 5. s für Ersetzen, $ bedeutet das Zeilenende. Wenn Sie die Datei sofort ändern möchten, verwenden Sie -i den Parameter, aber gehen Sie trotzdem mit Vorsicht damit um.

awk 'FNR==1{print $0 "-foo";}' file(s)

awk ist leistungsfähiger, verfügt aber nicht über den Parameter -i, um die Datei sofort zu ändern.

Antwort3

Dies können Sie tun mit

sed -i '1!b;s/$/\-foo/g' testfile

Dies nimmt die Datei, betrachtet nur die erste Zeile (1!b;), sucht nach dem Zeilenende ($) und ersetzt es durch die gewünschte Zeichenfolge.

verwandte Informationen