Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 548
Rlearner Avatar asked Oct 21 '22 07:10

Rlearner


1 Answers

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
like image 95
miindlek Avatar answered Oct 24 '22 01:10

miindlek