Find and replace using sed command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Find and replace using sed command
# 1  
Old 02-20-2013
Find and replace using sed command

The content of the file filea.txt is as follows.
---------
Code:
case $HOSTNAME in
        aaa)
                DS_PARM_VALUE_SET=vsDev
                APT_Configuration_File=/appl/infoserver/Server/Configurations/2node.apt

                ;;
        bbb)
                DS_PARM_VALUE_SET=vsQA
                APT_Configuration_File=/appl/infoserver/Server/Configurations/2node.apt

                ;;
        ccc)
                DS_PARM_VALUE_SET=vsProd
                APT_Configuration_File=/appl/infoserver/Server/Configurations/2node.apt

                ;;
        *)
                DS_PARM_VALUE_SET=vsDev
                APT_Configurations_File=/appl/infoserver/Server/Configuarations/2node.apt

                ;;
esac

---------

Now aaa has to be changed to 'DEV', bbb has to be changed to 'QA' and ccc has to be changed to 'PROD'.

The new file should be as follows.
---------
Code:
case $HOSTNAME in
        'DEV')
                DS_PARM_VALUE_SET=vsDev
                APT_Configuration_File=/appl/infoserver/Server/Configurations/2node.apt

                ;;
        'QA')
                DS_PARM_VALUE_SET=vsQA
                APT_Configuration_File=/appl/infoserver/Server/Configurations/2node.apt

                ;;
        'PROD')
                DS_PARM_VALUE_SET=vsProd
                APT_Configuration_File=/appl/infoserver/Server/Configurations/2node.apt

                ;;
        *)
                DS_PARM_VALUE_SET=vsDev
                APT_Configurations_File=/appl/infoserver/Server/Configuarations/2node.apt

                ;;
esac

---------
I have tried the following command to perform this. But it did not work.

---------
Code:
find ${Appl_Path} -type f -name '*.properties' -print | while read i
do
    sed -e 's/aaa/\'DEV\'/g' $i > $i.tmp && mv $i.tmp $i
    sed -e 's/bbb/\'QA\'/g' $i > $i.tmp && mv $i.tmp $i
    sed -e 's/ccc/\'PROD\'/g' $i > $i.tmp && mv $i.tmp $i
done

---------


Can anyone help me to fix this issue?

Thanks
Krishnakanth Manivannan

Last edited by Franklin52; 02-21-2013 at 03:27 AM.. Reason: Please use code tags for data and code samples
# 2  
Old 02-20-2013
Please use code tags around code fragments or data samples

Try this awk code:
Code:
awk '   /aaa/ {
                sub("aaa","'\''DEV'\''");
}       /bbb/ {
                sub("bbb","'\''QA'\''");
}       /ccc/ {
                sub("ccc","'\''PROD'\''");
}1' input_file > output_file

# 3  
Old 02-20-2013
The gnu sed has -i for update in place. You can just say:
Code:
find ${Appl_Path} -type f -name '*.properties' | while read i
 do
  sed -i '
    s/aaa/'"'"'DEV'"'"'/g
    s/bbb/'"'"'QA'"'"'/g
    s/ccc/'"'"'PROD'"'"'/g
   ' $i
 done

Nothing is meta in ' land, so leave for " land; a single quote in a single quoted string is single-double-single-double-single; I guess I just don't like barefoot \'. Single quotes saves the shell and unwary programmer from any interpretation. Also go to " land for $variables, then come back. Flie globbing is barefoot time.

You, too, deserve nicely indented code where the sed-isms are on different lines than the shell-isms. It prevents bugs and makes maintenance more error-free.

Last edited by DGPickett; 02-20-2013 at 04:15 PM..
# 4  
Old 02-20-2013
Using sed
Code:
sed 's/aaa/'\''DEV'\''/; s/bbb/'\''QA'\''/; s/ccc/'\''PROD'\''/' input_file

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help with Passing the Output of grep to sed command - to find and replace a string in a file.

I have a file example.txt as follows :SomeTextGoesHere $$TODAY_DT=20140818 $$TODAY_DT=20140818 $$TODAY_DT=20140818I need to automatically update the date (20140818) in the above file, by getting the new date as argument, using a shell script. (It would even be better if I could pass... (5 Replies)
Discussion started by: SriRamKrish
5 Replies

2. 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

3. Shell Programming and Scripting

sed command to skip the first line during find and replace operation

Hi Gurus, I did an exhaustive search for finding the script using "sed" to exclude the first line of file during find and replace. The first line in my file is the header names. Thanks for your help.. (4 Replies)
Discussion started by: ks_reddy
4 Replies

4. Shell Programming and Scripting

sed find and replace command not working

Hi, Am trying to replace a character '-' with 'O' in position 289 in my file but am not success with below command. sed 's/^\(.\{289\}\)-/\1O/' filename sed: 0602-404 Function s/^\(.\{289\}\)-/\1O/ cannot be parsed. Thanks in Advance Sara Video tutorial on how to use code tags in The... (9 Replies)
Discussion started by: Sara183
9 Replies

5. Shell Programming and Scripting

sed command to find and replace

Hello All, I need a sed command to find and replace below text in multiple files in a directory. Original Text :- "$SCRIPT_PATH/files" Replace with :- "$RESOURCE_FILE" Thank you in advance !!! Regards, Anand Shah (1 Reply)
Discussion started by: anand.shah
1 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

Hi, I have two files file1 :> val="10" port="localhost:8080" httpadd="http:\\192.168.0.239" file2 :> val=${val} port=${port} httpadd=${httpadd} fileloc=${fileloc} file3(or file2) should have following output(input from fileone) file3 (8 Replies)
Discussion started by: nitin.pathak
8 Replies

8. Shell Programming and Scripting

Loop with sed command to replace line with sed command in it

Okay, title is kind of confusion, but basically, I have a lot of scripts on a server that I need to replace a ps command, however, the new ps command I'm trying to replace the current one with pipes to sed at one point. So now I am attempting to create another script that replaces that line. ... (1 Reply)
Discussion started by: cbo0485
1 Replies

9. Shell Programming and Scripting

Sed command to find, manipulate and replace a number

Hi, Im very new to the world of sed so I'm really not even sure if this is possible. What i need to do is read from a flat file and every time i see this line: VAL=123,456 I need to change 456 to 457 for every occurence of this line in the file. The numbers 123 and 456 are different for... (6 Replies)
Discussion started by: LT_2008
6 Replies

10. UNIX for Dummies Questions & Answers

how to use sed or perl command to find and replace a directory in a file

how to use sed command to find and replace a directory i have a file.. which contains lot of paths ... for eg.. file contains.. /usr/kk/rr/12345/1 /usr/kk/rr/12345/2 /usr/kk/rr/12345/3 /usr/kk/rr/12345/4 /usr/kk/rr/12345/5 /usr/kk/rr/12345/6 /usr/kk/rr/12345/7... (1 Reply)
Discussion started by: wip_vasikaran
1 Replies
Login or Register to Ask a Question