How to replace a pattern with newline (\n) with sed under UNIX / Linux operating systems?

14,022

Solution 1

Sed uses & as a shortcut for the matched pattern. So you are replacing :s1: with :s1:\n.

Change your sed command like this:

sed 's/:sl:/\n/g' singleline.txt

Solution 2

You can do it more easily with tr : tr '\n' ' ' < singleline.txt

Share:
14,022
Rlearner
Author by

Rlearner

Updated on June 17, 2022

Comments

  • Rlearner
    Rlearner almost 2 years

    I have a txt file which contains:

    Some random
    text here. This file
    has multiple lines. Should be one line.
    

    I use:

    sed '{:q;N;s/\n/:sl:/g;t q}' file1.txt > singleline.txt
    

    and get:

    Some random:sl:text here. This file:sl:has multiple lines. Should be one line.
    

    Now I want to replace the :sl: pattern with newline (\n) character. When I use:

    sed 's/:sl:/&\n/g' singleline.txt
    

    I get:

    Some random:sl:
    text here. This file:sl:
    has multiple lines. Should be one line.
    

    How to replace the pattern with newline character instead of adding newline character after the pattern?