Find and replace using sed


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Find and replace using sed
# 1  
Old 11-25-2013
Find and replace using sed

File

Code:
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.

Code:
while read line 
do 
sed 's/$line/77/' file 
done<inputfile

But here I need to find value in column 3 and want to replace value in column 5.

Output like:

Code:
1,2,33,C,B 
3,5,66,K,77 
1,2,33,H,M 
3,5,66,M,77
6,9,66,J,77

how to do this in sed?
# 2  
Old 11-25-2013
Quote:
Originally Posted by Roozo
File

Code:
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.

Code:
while read line 
do 
sed 's/$line/77/' file 
done<inputfile

But here I need to find value in column 3 and want to replace value in column 5.

Output like:

Code:
1,2,33,C,B 
3,5,66,K,77 
1,2,33,H,M 
3,5,66,M,77
6,9,66,J,77

how to do this in sed?
Will you please explain on what basis you replaced R C and F in column 5 with 77? Whether it's column5 = column 3 value + 11 ? If yes why not for B and M ?
# 3  
Old 11-25-2013
For field seperated columns, use awk.

Code:
 awk -F, '{if($3=="66") $5=77;print $0}'  OFS="," file


Last edited by greet_sed; 11-25-2013 at 10:23 AM.. Reason: Updated code for OFS
# 4  
Old 11-25-2013
Hello,

1 more awk approach without OFS

Code:
awk -F"," '$3==66 {$5=77} {print $0}' file_name

Output will be as follows.

Code:
1,2,33,C,B
3 5 66 K 77
1,2,33,H,M
3 5 66 M 77
6 9 66 J 77


Thanks,
R. Singh

Last edited by RavinderSingh13; 11-25-2013 at 10:35 AM.. Reason: Adding Output to post.
# 5  
Old 11-25-2013
Greet sed : Command not replacing the value, just displaying the input.

Akshay:
I'm not doing any column5 = column 3 value + 11

Just finding pattern in column3 and if pattern founds, replace value on the same line in column5.
# 6  
Old 11-25-2013
Thanks Roozo

You may try if replacement of value in column5 is based on column3 value

Code:
$ awk -F, '$5 = $3 == 66 ? 77 : $5 ' OFS=, file

OR
Code:
$ awk -F, '$5 = $3 == find ? replace : $5 ' OFS=, find=66 replace=77  file

# 7  
Old 11-25-2013
@ Roozo:
All the solutions written here so far has to be redirected to new file otherwise it will be displayed in terminal as you said.

Like this:
Code:
awk '{code}' file > output

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

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

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

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

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