Env Variable substituion in Sed (-s option)


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
# 1  
Env Variable substituion in Sed (-s option)

Folks,
I've been trying to use the ENV variable with slashes(/) in its value inside the sed substitution..

Sed 's/myval/'$MYVAL'/' file1 >> file.tmp

If MYVAL=<sometext>, it works.
if MYVAL=/home/venkat, it doesnt.
***************************
bash-2.05$ export VAL=/home/venkat
bash-2.05$ sed 's/myval/'$VAL'/' file1
sed: command garbled: s/myval//home/venkat/
bash-2.05$
*****************************

I know that we generally escape the / using \, but here the value being substitued during run-time.

Could some1 throw some light on it.

Thx 4 ur time.

--Venkat.
# 2  
Quote:
Originally Posted by gvsreddy_539
I know that we generally escape the / using \, but here the value being substitued during run-time.
sed doesn't know that. All it ever knows it what it gets as it's arguments no matter how they are prepared.

You may well have to encode your path so each / is prefixed by \ before you pass it to sed.
# 3  
Thx Portor.
I am prefixing it with \ now.
Please note that need to prefix with 2 slashes.

************************************
bash-2.05$ export VAL=\\/home\\/venkat
bash-2.05$ echo $VAL
\/home\/venkat
bash-2.05$ sed 's/myval/'$VAL'/' file1

**********************************
# 4  
Or just use a different separator:

Code:
bash 3.2.25(1)$ VAL=/home/venkat
bash 3.2.25(1)$ sed "s#myval#$VAL#" <(printf "myval\n")
/home/venkat

# 5  
Wow..this is another cool feature..I tried it now and works.

Thanks radoulov.
So, then we can use any seperator in Sed?
# 6  
Sed will treat the character immediately after the 's' as the separator,
don't know if there are any restrictions.
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #605
Difficulty: Medium
As of MySQL 8.0.14, the ADD DATAFILE clause of the CREATE TABLESPACE statement is mandatory.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Variable in awk substituion

I have a file with 20 blank spaces. I want to substitute each blank space for a string, and part of that string should include an incremental number Code while read line3 do awk -v var=${line3} '{i=var; sub("^]*$", "\\&\n@target G0.S"'$i'"\n@type xy"); print $0}'... (1 Reply)
Discussion started by: chrisjorg
1 Replies

2. Shell Programming and Scripting

Treat value of variable as env variable

Hi All, I have a requirement where I have a config file, which contains 2 coulmn.values of first column are environmnet variable, whose value is defined in an environment file. In my script I need to read the config file, and get the value of the config file variable from env file. I... (2 Replies)
Discussion started by: alok2082
2 Replies

3. Web Development

Deny from env=env-variable Does not work

(Above from Apache docs). On my system, using: SetEnvIf User-Agent Mozilla IsBad=1 Order allow,deny Allow from all Deny from env=IsBad ...I see that environment variable is set (using phpinfo()) but the page is still served. No errors in the Apache logs. (1 Reply)
Discussion started by: gnurob
1 Replies

4. Solaris

Env variable in solaris

Hi, Am installing SAP on Solaris 10. How to set env variables permanently? Reg (0 Replies)
Discussion started by: daggupati453
0 Replies

5. Shell Programming and Scripting

Env variable

Hello, I want to cange env variable on SunOS. I tried: export GONGA=$GONGA:/users/BANK1/basic/queues/SARON_SPACE1 it changed it only localy for my session. when i opened a new session (telnet etc') the old value exist. How can I change it to effact all sessions. Thanks. (2 Replies)
Discussion started by: LiorAmitai
2 Replies

6. Shell Programming and Scripting

get env variable from last script

I have 2 scripts t2.sh calls t1.sh. I need to get the vaule of a env variable from t1.sh /tmp/test$ cat t1.sh #!/bin/sh INSTANCE="font/fc-cache" export INSTANCE svcadm disable ${INSTANCE} /tmp/test$ cat t2.sh #!/bin/sh . /tmp/test/t1.sh echo ${INSTANCE} The above works... (9 Replies)
Discussion started by: honglus
9 Replies

7. Shell Programming and Scripting

Doubt on ENV variable

Question 1: If I set ENV=$HOME/myenvprofile.ksh, will my script get executed when ever I login to my with KSH. My doubt is we used to put this in .profile of our home directory. SO when ever I login will it executed? QUestion 2: If I set ENV=`echo "hi"` or 'echo "hi" ', what would be the output.... (0 Replies)
Discussion started by: ramkrix
0 Replies

8. UNIX for Dummies Questions & Answers

Env Variable

Hi, I have a doubt on Environment variable. I want to know where and when the envirnment variables are defined? Thanks & Regards, Siba (1 Reply)
Discussion started by: siba.s.nayak
1 Replies

9. UNIX for Dummies Questions & Answers

PWD env variable

Could you please tell me, which process / file is responsible for the setting of PWD env variable in Solaris Thanks (1 Reply)
Discussion started by: chaandana
1 Replies

10. Shell Programming and Scripting

bash env variable containing @

I want to set a bash env variable which has @ in its name, for example, @YOGESH@ may i know how do i do this? (4 Replies)
Discussion started by: Yogesh Sawant
4 Replies

Featured Tech Videos