2016-04-18 6 views
2

Wie kann ich eine neue Zeile am Ende der Datei mit folgendem Befehl aus der Addition verhindern sed:Warum fügt sed der Datei eine neue Zeile hinzu und wie verhindert man sie?

find . -not -path "./.git/*" -type f -name '*' -exec sed -i '' 's/password1/passworddeleted/g; s/password2/passworddeleted/g;' {} + 

EDIT: Auf meine Frage beweisen:

mkdir test; cd test; printf "no new lines" > no-new-line.txt; cat -e no-new-line.txt; find . -not -path "./.git/*" -type f -name '*' -exec sed -i '' 's/password1/passworddeleted/g; s/password2/passworddeleted/g;' {} +; cat -e no-new-line.txt; 

Will Ausgang no new linesno new lines$. cat -e zeigt nicht druckbare Zeichen auf dem Mac an.

+0

(dies das letzte Byte der Datei entfernen) Dies ist keine neue Zeile das Hinzufügen von mir. Auf welchem ​​Betriebssystem läuft das? Versuchen Sie es auch mit [mcve]. – fedorqui

+0

Ich benutze MacOS – Charles

+0

Ich habe ein Beispiel hinzugefügt. Danke, dass du es mir gezeigt hast. – Charles

Antwort

0

sedimmer beendet seine Ausgabe durch ein Zeilenumbruchzeichen und Sie können es nicht zwingen, anders zu machen.

Von POSIX man sed:

Immer, wenn der Musterraum auf der Standardausgabe oder eine benannte Datei geschrieben wird, sed wird unverzüglich mit einem Newline folgen.

Als Alternative können Sie etwas anderes als sed oder Streifen das letzte Zeichen von sed ‚s Ausgang verwenden.

0

können Sie diese verwenden oder mit Rohr kombinieren:

truncate -s -1 <file> 

Verwandte Themen