Sed - variable substitution


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Sed - variable substitution
# 1  
Old 03-15-2011
Sed - variable substitution

Problem with the code below is that the value of the variable is not getting substituted in the sed expression.

Code:
#/bin/csh
set UNIX_ID="rajibd"
set X_ID="xrajibd"
sed -n 's/$UNIX_ID/$X_ID/g' passwd

When run , it is not giving expected output as shown below :

Code:
adroit:/home/seo/hitendra 71 ] sh -x change
+ set UNIX_ID=rajibd
+ set X_ID=xrajibd
+ sed -n s///g passwd

# 2  
Old 03-15-2011
Quote:
Originally Posted by hiten.r.chauhan
Code:
#/bin/csh
set UNIX_ID="rajibd"
set X_ID="xrajibd"
sed -n "s/$UNIX_ID/$X_ID/g" passwd

# 3  
Old 03-15-2011
Quote:
Originally Posted by hiten.r.chauhan
Problem with the code below is that the value of the variable is not getting substituted in the sed expression.

Code:
#/bin/csh
set UNIX_ID="rajibd"
set X_ID="xrajibd"
sed -n 's/$UNIX_ID/$X_ID/g' passwd

When run , it is not giving expected output as shown below :

Code:
adroit:/home/seo/hitendra 71 ] sh -x change
+ set UNIX_ID=rajibd
+ set X_ID=xrajibd
+ sed -n s///g passwd

(1) You are writing a C-Shell script and (2) You are invoking it with sh - a bourne-derived shell - to run with the -x option. (3) The sed invocation may be wrong as you will not see any output, changed or otherwise. Did you really mean the g for global substitute, or p for print the result of change?

Also, that first line is wrong - it should be
Code:
#!/bin/csh

Andrew
# 4  
Old 03-15-2011
Sed - variable substitution

I rectified the shabang line.
But the change is not reflected in the passwd file.
# 5  
Old 03-15-2011
Quote:
Originally Posted by hiten.r.chauhan
I rectified the shabang line.
But the change is not reflected in the passwd file.
It won't - sed does not work like that. If you are using a Linux system you can use the -i or --in-place option, ie
Code:
sed -i.old "s/$UNIX_ID/$X_ID/g" passwd

If you are not using Linux, and the sed you have is not a gnu sed try this instead:
Code:
cp -p passwd passwd-old
sed "s/$UNIX_ID/$X_ID/g" passwd > passwd-new
cp passwd-new passwd
rm passwd-new

While you could just rename passwd into passwd-old and then redirect the output of sed directly into a new passwd file this should help you back out if there are problems with the script.

Andrew
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed variable expansion fails for substitution in range

I'm trying to change "F" to "G" in lines after the first one: 'FUE.SER' 5 1 1 F0501 F0401 F0502 2 1 F0301 E0501 F0201 E0502 F0302 3 1 F0503 E0503 E0301 E0201 E0302 E0504 F0504 4 1 F0402 F0202 E0202 F0101 E0203 F0203 F0403 5 1 F0505 E0505 E0303 E0204 E0304 E0506... (10 Replies)
Discussion started by: larrl
10 Replies

2. Shell Programming and Scripting

sed variable substitution in a script

Hi I am trying to do the following in a script find a string and add in a block of text two lines above on the command line this works fine #/usr/bin/cat /usr/local/etc/dhcpd.conf_subnet | /usr/xpg4/bin/sed -n -e '1h;1\!H;${;g;s/}.*#END of 10.42.33.0/#START of RANGE $dstart\:option... (3 Replies)
Discussion started by: eeisken
3 Replies

3. Shell Programming and Scripting

Sed variable substitution

Hello, I searched the forum and unable to find a solution for my particular problem. I have a text file I'm trying to insert some text using sed after finding a pattern.. File contains in one line Invoice date: xx/xx/xxxx Balance: $$$$ Name: xxxxxxxxxxxxxx Trying to insert Invoice "Number:... (3 Replies)
Discussion started by: mallu0987
3 Replies

4. Shell Programming and Scripting

Simple sed variable substitution

Give the code: set line = 2 set year = `sed -n '2p' file while ($line < 500) echo $line > f.txt @ line = $line + 1 end How do I utilize the variable $line in the code instead of the number 2. I'm using this in a while loop and counter. I've tried quoting it, double/single... (1 Reply)
Discussion started by: wxornot
1 Replies

5. Shell Programming and Scripting

variable substitution in sed

Hi, I have to insert a line at a particular line number in my file. But the line number is not fixed and it will vary every time. So, I have to use a variable to get the line number I know we can use sed to insert lines at a particular line number but it does not work with variable... (3 Replies)
Discussion started by: sugan
3 Replies

6. Shell Programming and Scripting

SED variable substitution

Hi Chaps... I have a log file as below:- 01 Oct 2009 12:57:56 DEBUG : 01 Oct 2009 12:14:21 DEBUG :..... . . . .05 Oct 2009 14:31:56 DEBUG :.... . . .05 Oct 2009 12:57:56 DEBUG :.... 06 Oct 2009 01:23:11 DEBUG :.... . . .06 Oct 2009 12:53:46 DEBUG :.... (4 Replies)
Discussion started by: rpraharaj84
4 Replies

7. Shell Programming and Scripting

sed variable substitution problem

Hi, I am facing a strange problem. I have a script that used the following to search and replace text: sed 's/'"${find_var_parm}"'/'"${find_var_filter}"'/g' $ParmFile > $TempFile The values of $find_var_parm and $find_var_filter are set based on search criteria. The above seems to be working... (2 Replies)
Discussion started by: arsh
2 Replies

8. Shell Programming and Scripting

Sed variable substitution when variable constructed of a directory path

Hello, i have another sed question.. I'm trying to do variable substition with sed and i'm running into a problem. my var1 is a string constructed like this: filename1 filerev1 filepath1 my var2 is another string constructed like this: filename2 filerev2 filepath2 when i do... (2 Replies)
Discussion started by: alrinno
2 Replies

9. Shell Programming and Scripting

how to do variable substitution in 'sed'

I have a 'sed' editor command trying to read contents of one file into another. v=t1 PX=25 sed '/for/ r /$v/ext/tsfirmfiles.${PX}' /bb/bin/px${PX}.files.2b.deleted > result I cannot come up with the syntax so 'sed' would do a variable substitution. Any idea? Thanks a for help. -A (1 Reply)
Discussion started by: aoussenko
1 Replies

10. Shell Programming and Scripting

How to use sed substitution using a $variable for a line containing a word

$ cat ggg /E*Fare/testteam/public/pf3/nggfstatic/4k-pf3_3.case REGION1: /E*Fare/dist/src/nggfstaticbase/EFare/Server CODEBASE1: /dev_tools/LINUXMTP-4/EFS070718E/EFare/Server DATABASE1: nggfstatic SCRIPT: /efare1/admin/ezlcn/scripts/pf3_3_scriptlist.input PROLOGINITSIZE not yet set You... (4 Replies)
Discussion started by: Sangal-Arun
4 Replies
Login or Register to Ask a Question