LinuxQuestions.org
Latest LQ Deal: Latest LQ Deals
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Newbie
User Name
Password
Linux - Newbie This Linux forum is for members that are new to Linux.
Just starting out and have a question? If it is not in the man pages or the how-to's this is the place!

Notices


Reply
  Search this Thread
Old 02-09-2020, 02:28 PM   #1
cbtshare
Member
 
Registered: Jul 2009
Posts: 645

Rep: Reputation: 42
sed command


Hello All,

I have a variable with the following output

Code:
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBMaXN0U3RhY2tzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgQXZpYXRyaXhHYXRld2F5U2V0dXAgfCAgQ1JF
QVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMi0wOFQyMjo1MToxNC4zMDJaICB8Cnwg
IENoaWxkRUMyICAgICAgICAgICAgIHwgIFVQREFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIw
MjAtMDItMDlUMTk6MzY6MjQuMjcyWiAgfAp8ICBDaGlsZEVGUyAgICAgICAgICAgICB8ICBDUkVB
VEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAxLTA1VDIzOjUyOjUwLjUwNFogIHwKfCAg
Q2hpbGRFbGFzdGljYWNoZSAgICAgfCAgQ1JFQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAy
MC0wMS0wNVQyMzo1NTowMC4zMTZaICB8CnwgIENoaWxkRmFyZ2F0ZSAgICAgICAgIHwgIENSRUFU
RV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDlUMTk6MzY6MzMuNjU0WiAgfAp8ICBD
aGlsZFJEUyAgICAgICAgICAgICB8ICBDUkVBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIw
LTAyLTA5VDE5OjM2OjM3LjY4NFogIHwKfCAgQ2hpbGRTUXMgICAgICAgICAgICAgfCAgVVBEQVRF
X0NPTVBMRVRFIHwgIERSSUZURUQgfCAgMjAyMC0wMi0wOVQxOTozNzowMC43MjNaICB8CnwgIENo
aWxkU25zICAgICAgICAgICAgIHwgIFVQREFURV9DT01QTEVURSB8ICBEUklGVEVEIHwgIDIwMjAt
MDItMDlUMTk6Mzc6MTQuMTUyWiAgfAp8ICBFRkRFVlByb2plY3QgICAgICAgICB8ICBVUERBVEVf
Q09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAyLTA5VDE5OjM3OjM5Ljc2MlogIHwKfCAgUzMg
ICAgICAgICAgICAgICAgICAgfCAgVVBEQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0w
Mi0wOVQxOTozNzo0My4yNjVaICB8CnwgIFVzZXJzICAgICAgICAgICAgICAgIHwgIFVQREFURV9D
T01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDhUMjI6NTM6MDEuMzQwWiAgfAp8ICBWUEMy
ICAgICAgICAgICAgICAgICB8ICBVUERBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAy
LTA5VDE5OjM3OjU5Ljg1OFogIHwKfCAgcGFyZW50ICAgICAgICAgICAgICAgfCAgVVBEQVRFX0NP
TVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMi0wOVQxOTozODoyMS41MTNaICB8CnwgIHRlc3Qt
c2FtcGxlLWZ1bmN0aW9uIHwgIFVQREFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDIt
MDlUMTk6Mzg6MjguNTc5WiAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK

which is base64 and I want to send that output in a json format, so I need to concatenate each new line and also add
Code:
 \n
at the end before doing it so it ends up like below all in one line

Code:
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICBMaXN0U3RhY2tzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t
I have tried a few sed commands but nothing works and
Quote:
tr -d '\n'
but not seeing the \n added

Last edited by cbtshare; 02-09-2020 at 02:30 PM.
 
Old 02-09-2020, 02:31 PM   #2
ondoho
LQ Addict
 
Registered: Dec 2013
Posts: 19,872
Blog Entries: 12

Rep: Reputation: 6053Reputation: 6053Reputation: 6053Reputation: 6053Reputation: 6053Reputation: 6053Reputation: 6053Reputation: 6053Reputation: 6053Reputation: 6053Reputation: 6053
Quote:
Originally Posted by cbtshare View Post
I have tried a few sed commands but nothing works and but not seeing the \n added
What have you tried, what output do you get?
"Nothing works" carries very little informational value.
 
Old 02-09-2020, 02:39 PM   #3
crts
Senior Member
 
Registered: Jan 2010
Posts: 2,020

Rep: Reputation: 757Reputation: 757Reputation: 757Reputation: 757Reputation: 757Reputation: 757Reputation: 757
With Bash and GNU sed you could do:
Code:
sed -z 's/\n//g;s/$/\n/' <<< "$v"
where v is your variable that contains the base64 encoded string.
 
Old 02-09-2020, 02:40 PM   #4
cbtshare
Member
 
Registered: Jul 2009
Posts: 645

Original Poster
Rep: Reputation: 42
Quote:
Originally Posted by ondoho View Post
What have you tried, what output do you get?
"Nothing works" carries very little informational value.
I have tried
Code:
sed 's/$/\\n/' $testfile
It adds the new line character, but I now need to make it all in one line

Last edited by cbtshare; 02-09-2020 at 02:45 PM.
 
Old 02-09-2020, 02:45 PM   #5
boughtonp
Senior Member
 
Registered: Feb 2007
Location: UK
Distribution: Debian
Posts: 3,634

Rep: Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558
Quote:
Originally Posted by cbtshare View Post
I have tried
Code:
sed 's/$/\\n/' testfile
It adds the new line character, but I now need to make it all in one line
Sed works on one line at a time - you can get it work on your entire input by changing the line delimiter from newline to NUL with the -z option.

Combined with the g flag to perform the replace multiple times, (and also use \n instead of $ to actually match+replace the newlines, rather than just the position), results in:

Code:
sed -z 's/\n/\\n/g' testfile

Last edited by boughtonp; 02-09-2020 at 02:47 PM.
 
Old 02-09-2020, 02:47 PM   #6
cbtshare
Member
 
Registered: Jul 2009
Posts: 645

Original Poster
Rep: Reputation: 42
Quote:
Originally Posted by crts View Post
With Bash and GNU sed you could do:
Code:
sed -z 's/\n//g;s/$/\n/' <<< "$v"
where v is your variable that contains the base64 encoded string.
Thanks I tried this, but no -z option

Code:
sed -z 's/\n//g;s/$/\\n/g' <<< $output
sed: invalid option -- 'z'
 
Old 02-09-2020, 02:49 PM   #7
cbtshare
Member
 
Registered: Jul 2009
Posts: 645

Original Poster
Rep: Reputation: 42
Quote:
Originally Posted by boughtonp View Post
Sed works on one line at a time - you can get it work on your entire input by changing the line delimiter from newline to NUL with the -z option.

Combined with the g flag to perform the replace multiple times, (and also use \n instead of $ to actually match+replace the newlines, rather than just the position), results in:

Code:
sed -z 's/\n/\\n/g' testfile
thank you, unfortunately, there is no -z option in my sed version. Is there another way?
 
Old 02-09-2020, 02:53 PM   #8
boughtonp
Senior Member
 
Registered: Feb 2007
Location: UK
Distribution: Debian
Posts: 3,634

Rep: Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558
Quote:
Originally Posted by cbtshare View Post
sed: invalid option -- 'z'
Update your sed.

The -z option was added in v4.2.2 (2012), you'll probably find sed --version gives an older version.


If you can't update, you can workaround by using tr to change newlines to a character that can't exist in the input and replace that instead:
Code:
cat testfile | tr '\n' '~' | sed 's/~/\\n/g'

Last edited by boughtonp; 02-09-2020 at 02:55 PM.
 
Old 02-09-2020, 03:01 PM   #9
crts
Senior Member
 
Registered: Jan 2010
Posts: 2,020

Rep: Reputation: 757Reputation: 757Reputation: 757Reputation: 757Reputation: 757Reputation: 757Reputation: 757
Try this one:
Code:
sed ':a $s/\n//g;N;ba' <<< "$v"
Or if "<<<" is not supported:
Code:
echo "$v"| sed ':a $s/\n//g;N;ba'
 
Old 02-09-2020, 03:22 PM   #10
cbtshare
Member
 
Registered: Jul 2009
Posts: 645

Original Poster
Rep: Reputation: 42
Quote:
Originally Posted by crts View Post
Try this one:
Code:
sed ':a $s/\n//g;N;ba' <<< "$v"
Or if "<<<" is not supported:
Code:
echo "$v"| sed ':a $s/\n//g;N;ba'
Thank you , but none of those solutions seemed to work .

Code:
sed ':a $s/\n//g;N;ba' <<<$output
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0U3RhY2tzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgQXZpYXRyaXhHYXRld2F5U2V0dXAgfCAgQ1JF QVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMi0wOFQyMjo1MToxNC4zMDJaICB8Cnwg IENoaWxkRUMyICAgICAgICAgICAgIHwgIFVQREFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIw MjAtMDItMDlUMTk6MzY6MjQuMjcyWiAgfAp8ICBDaGlsZEVGUyAgICAgICAgICAgICB8ICBDUkVB VEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAxLTA1VDIzOjUyOjUwLjUwNFogIHwKfCAg Q2hpbGRFbGFzdGljYWNoZSAgICAgfCAgQ1JFQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAy MC0wMS0wNVQyMzo1NTowMC4zMTZaICB8CnwgIENoaWxkRmFyZ2F0ZSAgICAgICAgIHwgIENSRUFU RV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDlUMTk6MzY6MzMuNjU0WiAgfAp8ICBD aGlsZFJEUyAgICAgICAgICAgICB8ICBDUkVBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIw LTAyLTA5VDE5OjM2OjM3LjY4NFogIHwKfCAgQ2hpbGRTUXMgICAgICAgICAgICAgfCAgVVBEQVRF X0NPTVBMRVRFIHwgIERSSUZURUQgfCAgMjAyMC0wMi0wOVQxOTozNzowMC43MjNaICB8CnwgIENo aWxkU25zICAgICAgICAgICAgIHwgIFVQREFURV9DT01QTEVURSB8ICBEUklGVEVEIHwgIDIwMjAt MDItMDlUMTk6Mzc6MTQuMTUyWiAgfAp8ICBFRkRFVlByb2plY3QgICAgICAgICB8ICBVUERBVEVf Q09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAyLTA5VDE5OjM3OjM5Ljc2MlogIHwKfCAgUzMg ICAgICAgICAgICAgICAgICAgfCAgVVBEQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0w Mi0wOVQxOTozNzo0My4yNjVaICB8CnwgIFVzZXJzICAgICAgICAgICAgICAgIHwgIFVQREFURV9D T01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDhUMjI6NTM6MDEuMzQwWiAgfAp8ICBWUEMy ICAgICAgICAgICAgICAgICB8ICBVUERBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAy LTA5VDE5OjM3OjU5Ljg1OFogIHwKfCAgcGFyZW50ICAgICAgICAgICAgICAgfCAgVVBEQVRFX0NP TVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMi0wOVQxOTozODoyMS41MTNaICB8CnwgIHRlc3Qt c2FtcGxlLWZ1bmN0aW9uIHwgIFVQREFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDIt MDlUMTk6Mzg6MjguNTc5WiAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK

[root@ip-10-0-0-162 # echo  $output | tr '\n' '~' | sed 's/~/\\n/g'
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0U3RhY2tzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgQXZpYXRyaXhHYXRld2F5U2V0dXAgfCAgQ1JF QVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMi0wOFQyMjo1MToxNC4zMDJaICB8Cnwg IENoaWxkRUMyICAgICAgICAgICAgIHwgIFVQREFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIw MjAtMDItMDlUMTk6MzY6MjQuMjcyWiAgfAp8ICBDaGlsZEVGUyAgICAgICAgICAgICB8ICBDUkVB VEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAxLTA1VDIzOjUyOjUwLjUwNFogIHwKfCAg Q2hpbGRFbGFzdGljYWNoZSAgICAgfCAgQ1JFQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAy MC0wMS0wNVQyMzo1NTowMC4zMTZaICB8CnwgIENoaWxkRmFyZ2F0ZSAgICAgICAgIHwgIENSRUFU RV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDlUMTk6MzY6MzMuNjU0WiAgfAp8ICBD aGlsZFJEUyAgICAgICAgICAgICB8ICBDUkVBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIw LTAyLTA5VDE5OjM2OjM3LjY4NFogIHwKfCAgQ2hpbGRTUXMgICAgICAgICAgICAgfCAgVVBEQVRF X0NPTVBMRVRFIHwgIERSSUZURUQgfCAgMjAyMC0wMi0wOVQxOTozNzowMC43MjNaICB8CnwgIENo aWxkU25zICAgICAgICAgICAgIHwgIFVQREFURV9DT01QTEVURSB8ICBEUklGVEVEIHwgIDIwMjAt MDItMDlUMTk6Mzc6MTQuMTUyWiAgfAp8ICBFRkRFVlByb2plY3QgICAgICAgICB8ICBVUERBVEVf Q09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAyLTA5VDE5OjM3OjM5Ljc2MlogIHwKfCAgUzMg ICAgICAgICAgICAgICAgICAgfCAgVVBEQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0w Mi0wOVQxOTozNzo0My4yNjVaICB8CnwgIFVzZXJzICAgICAgICAgICAgICAgIHwgIFVQREFURV9D T01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDhUMjI6NTM6MDEuMzQwWiAgfAp8ICBWUEMy ICAgICAgICAgICAgICAgICB8ICBVUERBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAy LTA5VDE5OjM3OjU5Ljg1OFogIHwKfCAgcGFyZW50ICAgICAgICAgICAgICAgfCAgVVBEQVRFX0NP TVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMi0wOVQxOTozODoyMS41MTNaICB8CnwgIHRlc3Qt c2FtcGxlLWZ1bmN0aW9uIHwgIFVQREFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDIt MDlUMTk6Mzg6MjguNTc5WiAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK\n
maybe because I have a different bash version

GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
 
Old 02-09-2020, 03:26 PM   #11
cbtshare
Member
 
Registered: Jul 2009
Posts: 645

Original Poster
Rep: Reputation: 42
Quote:
Originally Posted by boughtonp View Post
Update your sed.

The -z option was added in v4.2.2 (2012), you'll probably find sed --version gives an older version.


If you can't update, you can workaround by using tr to change newlines to a character that can't exist in the input and replace that instead:
Code:
cat testfile | tr '\n' '~' | sed 's/~/\\n/g'
Thanks, this works on the file but how do I translate to a variable? (I know I was the one who used the file but it was just for testing, sry for the confusion)
Code:
echo $output | tr '\n' '~' | sed 's/~/\\n/g'
[/QUOTE]
Code:
echo $output | tr '\n' '~' | sed 's/~/\\n/g'
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0U3RhY2tzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgQXZpYXRyaXhHYXRld2F5U2V0dXAgfCAgQ1JF QVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMi0wOFQyMjo1MToxNC4zMDJaICB8Cnwg IENoaWxkRUMyICAgICAgICAgICAgIHwgIFVQREFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIw MjAtMDItMDlUMTk6MzY6MjQuMjcyWiAgfAp8ICBDaGlsZEVGUyAgICAgICAgICAgICB8ICBDUkVB VEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAxLTA1VDIzOjUyOjUwLjUwNFogIHwKfCAg Q2hpbGRFbGFzdGljYWNoZSAgICAgfCAgQ1JFQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAy MC0wMS0wNVQyMzo1NTowMC4zMTZaICB8CnwgIENoaWxkRmFyZ2F0ZSAgICAgICAgIHwgIENSRUFU RV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDlUMTk6MzY6MzMuNjU0WiAgfAp8ICBD aGlsZFJEUyAgICAgICAgICAgICB8ICBDUkVBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIw LTAyLTA5VDE5OjM2OjM3LjY4NFogIHwKfCAgQ2hpbGRTUXMgICAgICAgICAgICAgfCAgVVBEQVRF X0NPTVBMRVRFIHwgIERSSUZURUQgfCAgMjAyMC0wMi0wOVQxOTozNzowMC43MjNaICB8CnwgIENo aWxkU25zICAgICAgICAgICAgIHwgIFVQREFURV9DT01QTEVURSB8ICBEUklGVEVEIHwgIDIwMjAt MDItMDlUMTk6Mzc6MTQuMTUyWiAgfAp8ICBFRkRFVlByb2plY3QgICAgICAgICB8ICBVUERBVEVf Q09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAyLTA5VDE5OjM3OjM5Ljc2MlogIHwKfCAgUzMg ICAgICAgICAgICAgICAgICAgfCAgVVBEQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0w Mi0wOVQxOTozNzo0My4yNjVaICB8CnwgIFVzZXJzICAgICAgICAgICAgICAgIHwgIFVQREFURV9D T01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDhUMjI6NTM6MDEuMzQwWiAgfAp8ICBWUEMy ICAgICAgICAgICAgICAgICB8ICBVUERBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAy LTA5VDE5OjM3OjU5Ljg1OFogIHwKfCAgcGFyZW50ICAgICAgICAgICAgICAgfCAgVVBEQVRFX0NP TVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMi0wOVQxOTozODoyMS41MTNaICB8CnwgIHRlc3Qt c2FtcGxlLWZ1bmN0aW9uIHwgIFVQREFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDIt MDlUMTk6Mzg6MjguNTc5WiAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK\n
but when I cat the file is works

Code:
cat testfile | tr '\n' '~' | sed 's/~/\\n/g'
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwgICAgICAgICAgICAgICAgICAgICAgICAgICAg\nICAgICAgICBMaXN0U3RhY2tzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t\nLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgQXZpYXRyaXhHYXRld2F5U2V0dXAgfCAgQ1JF\nQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMi0wOFQyMjo1MToxNC4zMDJaICB8Cnwg\nIENoaWxkRUMyICAgICAgICAgICAgIHwgIFVQREFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIw\nMjAtMDItMDlUMTk6MzY6MjQuMjcyWiAgfAp8ICBDaGlsZEVGUyAgICAgICAgICAgICB8ICBDUkVB\nVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAxLTA1VDIzOjUyOjUwLjUwNFogIHwKfCAg\nQ2hpbGRFbGFzdGljYWNoZSAgICAgfCAgQ1JFQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAy\nMC0wMS0wNVQyMzo1NTowMC4zMTZaICB8CnwgIENoaWxkRmFyZ2F0ZSAgICAgICAgIHwgIENSRUFU\nRV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDlUMTk6MzY6MzMuNjU0WiAgfAp8ICBD\naGlsZFJEUyAgICAgICAgICAgICB8ICBDUkVBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIw\nLTAyLTA5VDE5OjM2OjM3LjY4NFogIHwKfCAgQ2hpbGRTUXMgICAgICAgICAgICAgfCAgVVBEQVRF\nX0NPTVBMRVRFIHwgIERSSUZURUQgfCAgMjAyMC0wMi0wOVQxOTozNzowMC43MjNaICB8CnwgIENo\naWxkU25zICAgICAgICAgICAgIHwgIFVQREFURV9DT01QTEVURSB8ICBEUklGVEVEIHwgIDIwMjAt\nMDItMDlUMTk6Mzc6MTQuMTUyWiAgfAp8ICBFRkRFVlByb2plY3QgICAgICAgICB8ICBVUERBVEVf\nQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAyLTA5VDE5OjM3OjM5Ljc2MlogIHwKfCAgUzMg\nICAgICAgICAgICAgICAgICAgfCAgVVBEQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0w\nMi0wOVQxOTozNzo0My4yNjVaICB8CnwgIFVzZXJzICAgICAgICAgICAgICAgIHwgIFVQREFURV9D\nT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDhUMjI6NTM6MDEuMzQwWiAgfAp8ICBWUEMy\nICAgICAgICAgICAgICAgICB8ICBVUERBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAy\nLTA5VDE5OjM3OjU5Ljg1OFogIHwKfCAgcGFyZW50ICAgICAgICAgICAgICAgfCAgVVBEQVRFX0NP\nTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMi0wOVQxOTozODoyMS41MTNaICB8CnwgIHRlc3Qt\nc2FtcGxlLWZ1bmN0aW9uIHwgIFVQREFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDIt\nMDlUMTk6Mzg6MjguNTc5WiAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t\nLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK\n
 
Old 02-09-2020, 03:38 PM   #12
crts
Senior Member
 
Registered: Jan 2010
Posts: 2,020

Rep: Reputation: 757Reputation: 757Reputation: 757Reputation: 757Reputation: 757Reputation: 757Reputation: 757
Quote:
Originally Posted by cbtshare View Post
Thank you , but none of those solutions seemed to work .

Code:
sed ':a $s/\n//g;N;ba' <<<$output
maybe because I have a different bash version

GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
You did NOT try my proposed solution. The "quotes" around the variable are important, otherwise it will fail, as it already has.

Code:
sed ':a $s/\n//g;N;ba' <<< "$output"
 
Old 02-09-2020, 03:56 PM   #13
cbtshare
Member
 
Registered: Jul 2009
Posts: 645

Original Poster
Rep: Reputation: 42
Quote:
Originally Posted by crts View Post
You did NOT try my proposed solution. The "quotes" around the variable are important, otherwise it will fail, as it already has.

Code:
sed ':a $s/\n//g;N;ba' <<< "$output"
I apologize if I missed the quotes , its same things
Code:
sed ':a $s/\n//g;N;ba' <<< "$output"
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0U3RhY2tzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgQXZpYXRyaXhHYXRld2F5U2V0dXAgfCAgQ1JFQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMi0wOFQyMjo1MToxNC4zMDJaICB8CnwgIENoaWxkRUMyICAgICAgICAgICAgIHwgIFVQREFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDlUMTk6MzY6MjQuMjcyWiAgfAp8ICBDaGlsZEVGUyAgICAgICAgICAgICB8ICBDUkVBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAxLTA1VDIzOjUyOjUwLjUwNFogIHwKfCAgQ2hpbGRFbGFzdGljYWNoZSAgICAgfCAgQ1JFQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMS0wNVQyMzo1NTowMC4zMTZaICB8CnwgIENoaWxkRmFyZ2F0ZSAgICAgICAgIHwgIENSRUFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDlUMTk6MzY6MzMuNjU0WiAgfAp8ICBDaGlsZFJEUyAgICAgICAgICAgICB8ICBDUkVBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAyLTA5VDE5OjM2OjM3LjY4NFogIHwKfCAgQ2hpbGRTUXMgICAgICAgICAgICAgfCAgVVBEQVRFX0NPTVBMRVRFIHwgIERSSUZURUQgfCAgMjAyMC0wMi0wOVQxOTozNzowMC43MjNaICB8CnwgIENoaWxkU25zICAgICAgICAgICAgIHwgIFVQREFURV9DT01QTEVURSB8ICBEUklGVEVEIHwgIDIwMjAtMDItMDlUMTk6Mzc6MTQuMTUyWiAgfAp8ICBFRkRFVlByb2plY3QgICAgICAgICB8ICBVUERBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAyLTA5VDE5OjM3OjM5Ljc2MlogIHwKfCAgUzMgICAgICAgICAgICAgICAgICAgfCAgVVBEQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMi0wOVQxOTozNzo0My4yNjVaICB8CnwgIFVzZXJzICAgICAgICAgICAgICAgIHwgIFVQREFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDhUMjI6NTM6MDEuMzQwWiAgfAp8ICBWUEMyICAgICAgICAgICAgICAgICB8ICBVUERBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAyLTA5VDE5OjM3OjU5Ljg1OFogIHwKfCAgcGFyZW50ICAgICAgICAgICAgICAgfCAgVVBEQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMi0wOVQxOTozODoyMS41MTNaICB8CnwgIHRlc3Qtc2FtcGxlLWZ1bmN0aW9uIHwgIFVQREFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDlUMTk6Mzg6MjguNTc5WiAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK
 
Old 02-09-2020, 04:23 PM   #14
crts
Senior Member
 
Registered: Jan 2010
Posts: 2,020

Rep: Reputation: 757Reputation: 757Reputation: 757Reputation: 757Reputation: 757Reputation: 757Reputation: 757
Quote:
Originally Posted by cbtshare View Post
I apologize if I missed the quotes , its same things
Code:
sed ':a $s/\n//g;N;ba' <<< "$output"
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0U3RhY2tzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCAgQXZpYXRyaXhHYXRld2F5U2V0dXAgfCAgQ1JFQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMi0wOFQyMjo1MToxNC4zMDJaICB8CnwgIENoaWxkRUMyICAgICAgICAgICAgIHwgIFVQREFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDlUMTk6MzY6MjQuMjcyWiAgfAp8ICBDaGlsZEVGUyAgICAgICAgICAgICB8ICBDUkVBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAxLTA1VDIzOjUyOjUwLjUwNFogIHwKfCAgQ2hpbGRFbGFzdGljYWNoZSAgICAgfCAgQ1JFQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMS0wNVQyMzo1NTowMC4zMTZaICB8CnwgIENoaWxkRmFyZ2F0ZSAgICAgICAgIHwgIENSRUFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDlUMTk6MzY6MzMuNjU0WiAgfAp8ICBDaGlsZFJEUyAgICAgICAgICAgICB8ICBDUkVBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAyLTA5VDE5OjM2OjM3LjY4NFogIHwKfCAgQ2hpbGRTUXMgICAgICAgICAgICAgfCAgVVBEQVRFX0NPTVBMRVRFIHwgIERSSUZURUQgfCAgMjAyMC0wMi0wOVQxOTozNzowMC43MjNaICB8CnwgIENoaWxkU25zICAgICAgICAgICAgIHwgIFVQREFURV9DT01QTEVURSB8ICBEUklGVEVEIHwgIDIwMjAtMDItMDlUMTk6Mzc6MTQuMTUyWiAgfAp8ICBFRkRFVlByb2plY3QgICAgICAgICB8ICBVUERBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAyLTA5VDE5OjM3OjM5Ljc2MlogIHwKfCAgUzMgICAgICAgICAgICAgICAgICAgfCAgVVBEQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMi0wOVQxOTozNzo0My4yNjVaICB8CnwgIFVzZXJzICAgICAgICAgICAgICAgIHwgIFVQREFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDhUMjI6NTM6MDEuMzQwWiAgfAp8ICBWUEMyICAgICAgICAgICAgICAgICB8ICBVUERBVEVfQ09NUExFVEUgfCAgSU5fU1lOQyB8ICAyMDIwLTAyLTA5VDE5OjM3OjU5Ljg1OFogIHwKfCAgcGFyZW50ICAgICAgICAgICAgICAgfCAgVVBEQVRFX0NPTVBMRVRFIHwgIElOX1NZTkMgfCAgMjAyMC0wMi0wOVQxOTozODoyMS41MTNaICB8CnwgIHRlc3Qtc2FtcGxlLWZ1bmN0aW9uIHwgIFVQREFURV9DT01QTEVURSB8ICBJTl9TWU5DIHwgIDIwMjAtMDItMDlUMTk6Mzg6MjguNTc5WiAgfAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK
Sorry, I misread your initial post and realized you want to replace the newlines with literally '\n'. At first I thought you want to simply remove all new lines.

This should (hopefully) do:
Code:
sed ':a $s/\n/\\n/g;N;ba' <<< "$output"
PS:
It is not the same thing. The quoted version did get rid of all the newlines and concatenated the string to one line without leaving any whitespace. The unquoted version replaced the newline with a space.

Last edited by crts; 02-09-2020 at 04:27 PM.
 
1 members found this post helpful.
Old 02-09-2020, 05:13 PM   #15
boughtonp
Senior Member
 
Registered: Feb 2007
Location: UK
Distribution: Debian
Posts: 3,634

Rep: Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558Reputation: 2558
Quote:
Originally Posted by cbtshare View Post
Thanks, this works on the file but how do I translate to a variable? (I know I was the one who used the file but it was just for testing, sry for the confusion)
As per crts's response, you need double quotes around the $output variable to prevent unwanted word splitting - if in doubt, add quotes.


Both of these produce the desired output when used verbatim, except the first has trailing \n whilst the second doesn't:
Code:
echo "$output" | tr '\n' '~' | sed 's/~/\\n/g'
Code:
sed ':a $s/\n/\\n/g;N;ba' <<< "$output"
Whether to use echo vs a here string (<<<) to provide the variable is ultimately personal preference - the latter is slightly more efficient, but probably not to a noticeable/significant degree.

 
1 members found this post helpful.
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Sed substitution gives error "sed: command garbled" gsai0205 Linux - Newbie 3 09-13-2013 09:01 AM
[SOLVED] sed gives :sed: -e expression #1, char 1: unknown command: `'' samasat Linux - Newbie 10 06-09-2012 05:31 PM
[SOLVED] sed help to run sed command against multiple different file names bkone Programming 2 04-16-2012 12:27 PM
sed and escaping & in something like: echo $y | sed 's/&/_/g' prx Programming 7 02-03-2005 11:00 PM
Insert character into a line with sed? & variables in sed? jago25_98 Programming 5 03-11-2004 06:12 AM

LinuxQuestions.org > Forums > Linux Forums > Linux - Newbie

All times are GMT -5. The time now is 09:55 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration