How can I remove a line-feed/newline BEFORE a pattern using sed

awk, sed

Solution

Sure,

sed 'N;s/\n{/{/'

Or a more thorough version:

sed ':r;$!{N;br};s/\n{/{/g'

Here, `:r` sets a label that we can refer to in order to create a loop;

`$!{...}` executes the given set of commands for every line except the last one;

`N;br` are two commands the get executed in the loop: `N` appends a new line to the pattern space, and `br` branches back to the label `r`, completing the loop.

Then you have all of your file in pattern space when you run the final command:

s/\n{/{/g

You can see the difference between the two approaches if you try it on something like

Anytext
{
{
{

Problem

The title already states it: I want to use some linux one liner (e.g. sed) to transform ``` Anytext { ``` into ``` Anytext{ ``` Can this be done using sed or if not with sed then with an awk one liner ?

Original source