find and replace problem


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting find and replace problem
# 1  
Old 05-27-2009
find and replace problem

hi guys!!!

i am writing a script in which i take an input from user and find it in a file and replace it.
My input file looks like
Code:
hi
what your name?
allrise

my code looks is
Code:
echo "Enter the name"
read name
FILE="/opt/name.txt"
NEW_FILE="/opt/new_name.txt"
exec 0<$FILE
    while read line
    do
     if [ -n "`echo ${line} | grep 'allrise'`" ]
     then
              echo ${line} | sed 's|allrise|hello $name|g' >>$NEW_FILE
     else
             echo $line >>$NEW_FILE
     fi
     done <$FILE

When i run my script, it ask me for name suppose i gave "john"... but the output comes as shown below
Code:
hi
what your name?
hello $name

so, can anyone explain how i can get proper output which should be.
Code:
hi
what your name?
hello john

# 2  
Old 05-27-2009
Quote:
Originally Posted by allrise123
hi guys!!!

i am writing a script in which i take an input from user and find it in a file and replace it.
My input file looks like
Code:
hi
what your name?
allrise

my code looks is
Code:
echo "Enter the name"
read name
FILE="/opt/name.txt"
NEW_FILE="/opt/new_name.txt"
exec 0<$FILE
    while read line
    do
     if [ -n "`echo ${line} | grep 'allrise'`" ]
     then
              echo ${line} | sed 's|allrise|hello $name|g' >>$NEW_FILE


Variables are not expanded inside single quotes; use double quotes:

Code:
echo ${line} | sed "s|allrise|hello $name|g" >>$NEW_FILE

Quote:
Code:
     else
             echo $line >>$NEW_FILE
     fi
     done <$FILE

When i run my script, it ask me for name suppose i gave "john"... but the output comes as shown below
Code:
hi
what your name?
hello $name

so, can anyone explain how i can get proper output which should be.
Code:
hi
what your name?
hello john


Who don't you do:

Code:
sed "s/allrise/hello $name/" "$FILE" > "$NEWFILE"

There's no need for a loop.
# 3  
Old 05-27-2009
thanks for reply..

Actually this is not my actual file... this is just dummy file which i created just to ask my query... anyways i will try your suggestion..
# 4  
Old 06-06-2009
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Find and replace

Hi, I have a variable which holds the below value: echo $FROM_DIR /fsg/fgldevu/fs_ne/inst/FGLDEVU_01/logs/appl/conc/out/o14946708.out I want to change the value in the variable as below: out/o to be replaced with log/l .out to be replaced with .req The desired output should look like... (5 Replies)
Discussion started by: Prasannag87
5 Replies

2. Shell Programming and Scripting

Find and replace

Hi Team, one silly issue. but its not working for me. I need to find a pattern a file and replace it with the given value in another file. Here's the code snippet. Search_String=100 Replace_String=151 cat ${work}/temp_${CSV_File} | sed 's|"${Search_String}"|"${Replace_String}"|g'... (2 Replies)
Discussion started by: kmanivan82
2 Replies

3. Shell Programming and Scripting

Find and replace

In a directory I have many XML files, how to search for the string <text>You are here</text> and replace it with <text>YOU Are HERE</bc-text> in a unix command find . -name "*.xml" (1 Reply)
Discussion started by: sandy1028
1 Replies

4. Shell Programming and Scripting

Find Replace

Need to convert echo "7 6" to $7,$6 But the count of numbers can increase say echo "7,6,8,9" tried this didn't work echo "7 6" | sed 's/\(*\)/\1/' But did not help much (3 Replies)
Discussion started by: dinjo_jo
3 Replies

5. Shell Programming and Scripting

Find Replace Help

New to change change 10 to 45 its a first line in the file. "15/10/2009 00:00:00"|DATA|NEW (10 Replies)
Discussion started by: dinjo_jo
10 Replies

6. Shell Programming and Scripting

Find and replace problem

i have a script that will find a certian pattern and replace it with blank space #!/bin/ksh for i in `cat test.txt | grep "UTILINET" | cut -c 172-191` do perl -pi -e 's/$i//g' test.txt echo "Completed" done the command gives some of the below strings 50032E1B ... (5 Replies)
Discussion started by: ali560045
5 Replies

7. UNIX for Dummies Questions & Answers

Find and replace

Hi, I am trying to do this find and replace in unix and somehow its not working. TR|20080325|22952 |000000040|20080327|0530 TR|20080417|23078 |000000104|20080418|0530|1040001 | I have the records coming in the above format. My requirement is if delimiter count is not 8 then... (2 Replies)
Discussion started by: kiran_418
2 Replies

8. UNIX for Dummies Questions & Answers

Find and Replace

After running a command like grep -ir files2/ * This will find all the files that contain "files2/" in it. For example if it finds files2/dir/today files2/dir/yesterday files2/dir/2daysago Now it may find 100 instances, so is there a quick find and replace command I can use? I... (4 Replies)
Discussion started by: NycUnxer
4 Replies

9. UNIX for Dummies Questions & Answers

find and replace

I have statement like this column_id.columnname=="value" in unix i want to modify above statement to variable1=="value" that means i have to replace the string before "==" by string "variable1" second catch is, in statement instead of "==" you can have any arithmatic comarision... (7 Replies)
Discussion started by: mahabunta
7 Replies

10. UNIX for Dummies Questions & Answers

find and replace

Hi In our html pages, we have the image path as "/dir1/dir2/image.gif". We are changing the location of the image directory. So now we wish to do a global search and replace the path. I think we are having trouble with forward slash character. Please help Thanks in advance Vikas a... (3 Replies)
Discussion started by: vikas_j@hotmail
3 Replies
Login or Register to Ask a Question