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
Welcome to
LinuxQuestions.org , a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free.
Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please
contact us . If you need to reset your password,
click here .
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a
virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month.
Click here for more info.
02-09-2020, 02:28 PM
#1
Member
Registered: Jul 2009
Posts: 645
Rep:
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
at the end before doing it so it ends up like below all in one line
Code:
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwgICAgICAgICAgICAgICAgICAgICAgICAgICAg\n ICAgICAgICBMaXN0U3RhY2tzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor\n LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t
I have tried a few sed commands but nothing works and
but not seeing the \n added
Last edited by cbtshare; 02-09-2020 at 02:30 PM .
02-09-2020, 02:31 PM
#2
LQ Addict
Registered: Dec 2013
Posts: 19,872
Quote:
Originally Posted by
cbtshare
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.
02-09-2020, 02:39 PM
#3
Senior Member
Registered: Jan 2010
Posts: 2,020
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.
02-09-2020, 02:40 PM
#4
Member
Registered: Jul 2009
Posts: 645
Original Poster
Rep:
Quote:
Originally Posted by
ondoho
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 .
02-09-2020, 02:45 PM
#5
Senior Member
Registered: Feb 2007
Location: UK
Distribution: Debian
Posts: 3,634
Quote:
Originally Posted by
cbtshare
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 .
02-09-2020, 02:47 PM
#6
Member
Registered: Jul 2009
Posts: 645
Original Poster
Rep:
Quote:
Originally Posted by
crts
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'
02-09-2020, 02:49 PM
#7
Member
Registered: Jul 2009
Posts: 645
Original Poster
Rep:
Quote:
Originally Posted by
boughtonp
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?
02-09-2020, 02:53 PM
#8
Senior Member
Registered: Feb 2007
Location: UK
Distribution: Debian
Posts: 3,634
Quote:
Originally Posted by
cbtshare
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 .
02-09-2020, 03:01 PM
#9
Senior Member
Registered: Jan 2010
Posts: 2,020
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'
02-09-2020, 03:22 PM
#10
Member
Registered: Jul 2009
Posts: 645
Original Poster
Rep:
Quote:
Originally Posted by
crts
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.
02-09-2020, 03:26 PM
#11
Member
Registered: Jul 2009
Posts: 645
Original Poster
Rep:
Quote:
Originally Posted by
boughtonp
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
02-09-2020, 03:38 PM
#12
Senior Member
Registered: Jan 2010
Posts: 2,020
Quote:
Originally Posted by
cbtshare
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"
02-09-2020, 03:56 PM
#13
Member
Registered: Jul 2009
Posts: 645
Original Poster
Rep:
Quote:
Originally Posted by
crts
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
02-09-2020, 04:23 PM
#14
Senior Member
Registered: Jan 2010
Posts: 2,020
Quote:
Originally Posted by
cbtshare
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.
02-09-2020, 05:13 PM
#15
Senior Member
Registered: Feb 2007
Location: UK
Distribution: Debian
Posts: 3,634
Quote:
Originally Posted by
cbtshare
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.
All times are GMT -5. The time now is 09:55 AM .
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know .
Latest Threads
LQ News