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 ?
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
{
{
{
One way using sed
:
sed -ne '$! N; /^.*\n{/ { s/\n//; p; b }; $ { p; q }; P; D' infile
A test. Assuming infile
with content:
one
Anytext
{
two
three
{
four
five
{
Output will be:
one
Anytext{
two
three{
four
five{
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With