find and replace with sed


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting find and replace with sed
# 1  
Old 03-10-2011
find and replace with sed

Hi,
I have two files

file1 :>
Code:
val="10" 
port="localhost:8080"
httpadd="http:\\192.168.0.239"

file2 :>
Code:
val=${val}
port=${port}
httpadd=${httpadd}
fileloc=${fileloc}

file3(or file2) should have following output(input from fileone)
file3
Code:
val="10"
port="localhost:8080"
httpadd="http:\\192.168.0.239"
fileloc=${fileloc}

i have tried following code but no succes.
Code:
#!/bin/bash
cat file1 | while read line; do
    x=`echo $line | awk '{print $1}'`;y=`echo $line | awk '{print $3}'`;
    echo $x,$y;
    sed -e 's/\$.*'"$x"\.*'/'"$y"'/g' file2 > file2
done

Please help (pls note tht -i not works in AIX)


Moderator's Comments:
Mod Comment Please use [code] and [/code] tags when posting code, data or logs etc. to preserve formatting and enhance readability, thanks.

Last edited by zaxxon; 03-10-2011 at 07:35 AM.. Reason: code tags
# 2  
Old 03-10-2011
I am not sure if I missed something, but it seems you don't have to substitute anything.
Code:
$> cat f1; tail -1 f2 > f3
$> cat f3
val="10"
port="localhost:8080"
httpadd="http:\\192.168.0.239"
fileloc=${fileloc}

# 3  
Old 03-10-2011
thanks zaxxon,
but my file 2 is as follow

file2
Code:
some text here
val=${val}
some here
port=${port}
some text here 
httpadd=${httpadd}
some text here
fileloc=${fileloc}

so i want to find the perfect match from the vairablevalue file (in our case file1)
and replace that in orginial(file2) or new (file3) file.

Help please

Last edited by Franklin52; 03-10-2011 at 07:57 AM.. Reason: Please use code tags
# 4  
Old 03-10-2011
Ok, but I still think it does not need a substituiton Smilie

Code:
$> cat f1
val="10"
port="localhost:8080"
httpadd="http:\\192.168.0.239"
$> cat f2
some text here
val=${val}
some here
port=${port}
some text here
httpadd=${httpadd}
some text here
fileloc=${fileloc}
$> awk -F= 'NR==FNR {_[$1]=$2; next} _[$1] {print $1,_[$1]; next}1' OFS="=" f1 f2
some text here
val="10"
some here
port="localhost:8080"
some text here
httpadd="http:\\192.168.0.239"
some text here
fileloc=${fileloc}

# 5  
Old 03-10-2011
Bug thanks and please explain

Dear Zaxxon Thanks very very much.. much.. and much....
This is working fine just need one more help ..can you please explain the code ? please i had nevere gone through awk...Smilie
# 6  
Old 03-10-2011
-F= Defining = as field separator
NR==FNR If this is true, we are currently in the 1st file (f1)
{_[$1]=$2; We create an asociative array named _, where field 1 ($1) is the key and field 2 ($2) is the value to that key
next} When done with this line, just stop processing it and get the next one
_[$1] Here NR==FNR is not true anymore, so we are in the 2nd file (f2), and we check if the key from array _ matches
{print $1,_[$1]; and so we print field 1 and the element of the array where the key matches field 1
next} You already know this one, look above
1 When _[$1] did not match, we go here and just print the line
OFS="=" Defining "=" as the output field separator
f1 f2 Those 2 are our input files - the order is important as it depends, how we process the files
# 7  
Old 03-10-2011
YOU ARE ROCKING ..lets have a chilled beer today Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

sed find 2 strings and replace one

Hi Everyone, I want to find this 2 strings in a single line a file and replace the second string. this is the line i need to find <param name="user" value="CORE_BI"/> find user and CORE_BI and replace only CORE_BI with admin so finally the line should look like this. <param... (5 Replies)
Discussion started by: shajay12
5 Replies

2. Shell Programming and Scripting

Find and replace using sed

Hi All, I have a file as shown below: myFile.dat #---------------------------------------------------------- dataFile { Name shiva; location Delhi; travelID IDNumber; } 4 ( 560065 700007 100001 200002 )... (8 Replies)
Discussion started by: linuxUser_
8 Replies

3. Shell Programming and Scripting

Find and replace using sed

File 1,2,33,C,B 3,5,66,K,R 1,2,33,H,M 3,5,66,M,C 6,9,66,J,F I will use the below command to find and replace in sed, where I'm using variable to find pattern. while read line do sed 's/$line/77/' file done<inputfile But here I need to find value in column 3 and... (26 Replies)
Discussion started by: Roozo
26 Replies

4. Shell Programming and Scripting

Find and replace using sed command

The content of the file filea.txt is as follows. --------- case $HOSTNAME in aaa) DS_PARM_VALUE_SET=vsDev APT_Configuration_File=/appl/infoserver/Server/Configurations/2node.apt ;; bbb) DS_PARM_VALUE_SET=vsQA... (3 Replies)
Discussion started by: kmanivan82
3 Replies

5. Shell Programming and Scripting

Find and Replace with sed

Hi, I have a file such that: tart*)*98'bank'ksb64bank)(tart2d&f44bank I want to replace to: (only between tart and bank) tart*)*98'replaced'ksb64bank)(tart2d&f44replaced Thanks. (6 Replies)
Discussion started by: tara123
6 Replies

6. Shell Programming and Scripting

find and replace using SED

I need to do a find and replace. I tried below logic but getting warnings Could you please help? a=`echo "<!DOCTYPE aaaaa bbbbb \"sample.dtd\">"` b="<!DOCTYPE aaaaa bbbbb \" /a/b/c/datain/d_k/sample.dtd \">" echo $a | sed -e "s/$a/$b/" > c.txt getting the following error sed:... (1 Reply)
Discussion started by: kmanivan82
1 Replies

7. Shell Programming and Scripting

find and replace with SED

Hello all I have a file with a lot of records...Each one have a ID like this: 000000001 LDR L -----nam--2200217Ia-45e0 000000001 891 000000001 892 000000001 893 and so on then you have the second record: 000000002 LDR L -----nam--2200208Ia-15e0 000000002 891 000000002... (5 Replies)
Discussion started by: ldiaz2106
5 Replies

8. Shell Programming and Scripting

Help with find and Replace using sed

I have to update a paramater (dateMemLimit) present in a file, with a date (YYYYMMDD) equal to 5 days before the sysdate. The parameter will be in the following format. dateMemLimit = 20091201 Please note the blank spaces present between 'dateMemLimit' &'=' and between '='... (4 Replies)
Discussion started by: rajesh8s
4 Replies

9. Shell Programming and Scripting

find and replace using sed

Hello Everybody, I am doing something like this on Redhat Linux h=`cut -d"." -f4 file1` s=`cut -d"." -f4 file2` sed "s/$h/$s/g" file3 but this is not working but if giving constant value its working, for ex. sed "s/93/$h/g" file3 help... Thanks for looking into my question (2 Replies)
Discussion started by: arvind_aks15
2 Replies

10. Shell Programming and Scripting

Find a pattern and replace using sed.

Hi I need to help on finding the below pattern using sed <b><a href="/home/document.do?assetkey=x-y-abcde-1&searchclause=photo"> and replace as below in the same line on the index file. <b><a href="/abcde.html"> thx in advance. Mari (5 Replies)
Discussion started by: maridhasan
5 Replies
Login or Register to Ask a Question