Wie kann man mit sed die gesamte erste Zeile einer Datei durch diese erste Zeile plus zusätzlichen Text ersetzen? Wie kann ich beispielsweise -foo
an eine Datei anhängen, die nur eine Zeile enthält?
testfile
Inhalt beginnt:
some-text
testfile
Inhalt 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 -foo
nur 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,num
damit 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.