Wie füge ich die erste Zeile einer Datei hinzu?


6

Wie können Sie sed verwenden, um die gesamte erste Zeile einer Datei durch diese erste Zeile plus zusätzlichen Text zu ersetzen? Wie kann ich beispielsweise -fooan eine Datei anhängen , die nur eine Zeile enthält ?

testfile Inhalt beginnt:

some-text

testfile Inhalt Ende:

some-text-foo

Antworten:


4

Wie füge ich die erste Zeile einer Datei hinzu?

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 andere Möglichkeit, eine Zeichenfolge mit SED unter Windows an das Ende von Zeile 1 anzuhängen und sie dann für EOL-Zeichen, dh CRLF anstelle von LF, wieder in das DOS-Format zu konvertieren ...

Erster Befehl (Zeichen nur -fooan 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 konvertieren)

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

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

1 für die erste Zeile können Sie verwenden num,num, um den Bereich zuzuweisen, z. B. 3,5 wird Zeile 3 in Zeile 5 geändert. S als Ersatz bedeutet $ das Zeilenende. Wenn Sie die Datei sofort ändern möchten, verwenden Sie den -i Parameter trotzdem und verwenden Sie ihn mit Vorsicht.

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

awk ist leistungsfähiger, hat aber keinen -i-Parameter, um die Datei sofort zu ändern.


1

Sie können dies mit tun

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

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.