removing new line character from incoming stream using sed

csh, sed, shell

Solution

To remove newlines, use tr:

tr -d '\n'

If you want to replace each newline with a single space:

tr '\n' ' '

The error `ba: Event not found` is coming from csh, and is due to csh trying to match `!ba` in your history list. You can escape the `!` and write the command:

sed ':a;N;$\!ba;s/\n/ /g'  # Suitable for csh only!!

but sed is the wrong tool for this, and you would be better off using a shell that handles quoted strings more reasonably. That is, stop using csh and start using bash.

Problem

I am new to shell scripting and i am trying to remove new line character from each line using SED. this is what i have done so far : ``` printf "{new\nto\nlinux}" | sed ':a;N;s/\n/ /g' ``` removes only Ist new line character. I somewhere found this command : ``` printf "{new\nto\nlinux}" | sed ':a;N;$!ba;s/\n/ /g' ``` but it gives :"ba: Event not found." if i do: ``` printf "{new\nto\nlinux}" | sed ':a;N;s/\n/ /g' | sed ':a;N;s/\n/ /g' ``` then it gives correct output but i am looking for something better as i am not sure how many new character i will get when i run the script. incoming stream is from echo or printf or some variable in script.

Original source

Related problems