Ersetzen Sie alle Zeilenumbrüche mit Ausnahme der letzten


Antworten:


42

Sie können verwenden paste -s -d ' ' file.txt:

$ cat file.txt
one line
another line
third line
fourth line

$ paste -s -d ' ' file.txt 
one line another line third line fourth line

1
Cool! Die Optionen -sund -dscheinen für diesen Fall wie gemacht zu sein.
mkc

10

Sie können verwenden tr, um alle Zeilenumbrüche in Leerzeichen zu ersetzen und die Ausgabe an seddas letzte Leerzeichen weiterzuleiten und es wieder in eine neue Zeile zu setzen:

tr '\n' ' ' < afile.txt | sed '$s/ $/\n/'

5

Neuimplementierung von vonbrands Idee in Perl, vorausgesetzt die Datei ist klein genug:

perl -p00e 's/\n(?!\Z)/ /g' your_file

+1, da diese Methode für Ersetzungen mit Multibyte-Zeichen (im Gegensatz zu GNU Paste)
funktioniert


-1

Das hat bei mir funktioniert.

tr '\n' ' ' < file_with_new_line   | sed 's/\ $//g' > file_with_space

Dadurch wird auch die letzte Zeile entfernt.
Terdon

Ich denke nicht, es funktioniert gut. Hast du es wirklich versucht ???
Abhijit

Ja, habe ich. Hast du? Ihr trBefehl ersetzt alle Zeilenumbrüche durch Leerzeichen und Ihr sedBefehl entfernt das letzte Leerzeichen. Dies führt zu einer Datei ohne abschließenden Zeilenumbruch und ist daher nicht das, was die Frage verlangt. Übrigens hat gder sedBefehl keinen Sinn, int zu verwenden . Da du verwendest $, kann es nur am Ende passen, das gist sinnlos. Sie müssen auch nicht aus dem Raum entkommen, das `` macht auch keinen Unterschied.
Terdon
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.