Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

How can I replace all newlines with space except the last newline. I can replace all newline to space using tr but how I can do it with some exceptions?

share|improve this question

4 Answers 4

up vote 5 down vote accepted

You can use 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
share|improve this answer
    
Cool! The -s and -d options seem like made for this case. –  Ketan Feb 8 at 22:08
    
+1 My kind of guy! My favorite tool is paste! –  slm Feb 8 at 23:57

You can use tr to replace all newlines to space and pass the output to sed and replace the last space back to a newline:

tr '\n' ' ' < afile.txt | sed '$s/ $/\n/'
share|improve this answer

Re-implementing vonbrand's idea in Perl, provided the file is small enough:

perl -p00e 's/\n(?!\Z)/ /g' your_file
share|improve this answer

Something like sed -e 's;\n\(.\); \1;' should do...

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.