zum Zeilenende ohne Zeilenumbruch anhängen

889
Kev30

Wenn ich versuche, an das Ende einer Datei anzuhängen, wird eine neue Zeile erstellt. Jetzt habe ich versucht, das mit echo -n zu beheben, aber das funktioniert nicht.

Also, was versuche ich? Ich versuche folgendes Ergebnis zu erhalten:

Hello This Is A Test 

Aber wenn ich Text mit Echo anhange

echo -n "Test2" >> file.txt 

Folgendes passiert:

Hello This Is A Test Test2 

Was ich aber will ist:

Hello This Is A Test Test2 

Wie kann ich das machen? Ich habe Sed, Echo und Printf ausprobiert, aber nichts davon liefert das richtige Ergebnis

1

1 Antwort auf die Frage

1
Cyrus

Mit sed:

sed '$s/$/ Test2/' file 

oder

truncate -s-1 file echo -n " Test2" >> file 

Ausgabe:

Hallo Diese Ist EIN Test Test2 
Vielen Dank, die sed-Option funktioniert, außer dass die Ausgabe in der Konsole angezeigt wird. Der Text wird nicht in der Datei abgelegt. Ist das normal? Kev30 vor 6 Jahren 0
Wenn Sie Ihre Datei "in place" mit GNU sed bearbeiten möchten, fügen Sie die Option "-i" hinzu: `sed -i '$ s / $ / Test2 /' file` Cyrus vor 6 Jahren 0
Ich habe `` sed -i '$ s / $ / Test2 /' tmp.txt`` hinzugefügt, aber jetzt ende ich mit einer leeren Datei Kev30 vor 6 Jahren 0
Verwenden Sie ** GNU ** sed? Cyrus vor 6 Jahren 0
Ich bin nicht ganz sicher, was GNU ist (tut mir leid, ich lerne noch!) Wenn Sie OS meinen, dann verwende ich Centos 7. Kev30 vor 6 Jahren 0
Sie haben eine leere Datei, weil Sie dies wahrscheinlich an einem bestimmten Punkt getan haben: `sed '...' tmp.txt> tmp.txt` - wenn Sie dies tun, schneidet die Shell die Datei * ab, bevor * sed startet. glenn jackman vor 6 Jahren 1
In CentOS 7 wird GNU sed 4.2.2 verwendet (check 'sed --version | head -n 1'). Ich habe es mit RHEL7 und GNU sed 4.2.2 getestet. Cyrus vor 6 Jahren 0
Vielen Dank! Alles funktioniert so wie ich es wollte! Kev30 vor 6 Jahren 0