Find and replace using sed


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Find and replace using sed
# 1  
Old 05-07-2014
Find and replace using sed

Hi All,

I have a file as shown below: myFile.dat
#----------------------------------------------------------
dataFile
Code:
{
    Name        shiva;
    location     Delhi;
    travelID     IDNumber;
}

4
(
560065
700007
100001
200002
)

#---------------------------------------------------------
i wanted to make couple of changes using sed command.
1. find and change location to new place
Code:
sed -i 's/location.*/location bangalore;/' myFile.dat # this is done

2. copy travelID and paste it in front of 4
result should be like this
Code:
    IDNumber    4
    (
    560065 .....etc

3. put ; after last closing bracket )
result should be like this
Code:
    200002
    );

can some body help me?

Regards,
linuxUser_

Last edited by Scrutinizer; 05-07-2014 at 04:53 PM.. Reason: code tag
# 2  
Old 05-07-2014
So whats the final output? Do you want "travelID IDNumber;" to be there or remove it?
Also are there multiple patterns/blocks like this? Are they sequential?
# 3  
Old 05-07-2014
Hi clx
thanks for the reply.
final output file should be as shown below
#----------------------------------------------------------
dataFile
Code:
{
Name shiva;
location Bangalore;
travelID IDNumber;
}

IDNumber 4
(
560065
700007
100001
200002
);

#---------------------------------------------------------

---------- Post updated at 04:22 PM ---------- Previous update was at 04:08 PM ----------

sorry again ... iwant bit more generic way to do it as i will have varying list.
in the above case they are only 4 pin code entries so file will look like
Code:
4
(
111111
222222
333333
4444444
)

if i have 5 pincodes then one more pincode ll be added in the list as
Code:
5
(
111111
222222
333333
4444444
555555
)

so copying IDNumber and pasting before 4 or 5 should be in more generic way

Regards,
linuxUser_

Last edited by Scrutinizer; 05-07-2014 at 04:53 PM.. Reason: code tags
# 4  
Old 05-07-2014
Try this

Code:
awk -v newLocation=Bangalore '
	/^location/ {$2=newLocation";"} 
	/^travelID/ {tID=$2;gsub(";$"," ",tID)} 
	/^\}$/ {f=1} 
	f==1 && /^[0-9]+$/ {$0=tID $0;f=0} 
	{print}' file

Output:

Code:
#----------------------------------------------------------
dataFile
{
Name shiva;
location Bangalore;
travelID IDNumber;
}

IDNumber 4
(
560065
700007
100001
200002
)

#----------------------------------------------------------

Note : Its strictly based on the sample you provided.
# 5  
Old 05-07-2014
Thanks a lot clx,

it works fine but printing on terminal, how can i save it? in fact i want to overwrite it.
sorry for bothering you but at the end i need ; after closing bracket like this
Code:
444444
);

Regards
linuxUser_

Last edited by Scrutinizer; 05-07-2014 at 04:54 PM.. Reason: code tags
# 6  
Old 05-07-2014
Code:
awk -v newLocation=Bangalore '
	/^location/ {$2=newLocation";"} 
	/^travelID/ {tID=$2;gsub(";$"," ",tID)} 
	/^\}$/ {f=1} 
	f==1 && /^[0-9]+$/ {$0=tID $0;f=0} 
	/^\)$/ {$0=$0";"} 
	{print}' file > new_file

# 7  
Old 05-07-2014
Thank you very much.
I have a question, In mean time i tried with different files.
some of my files have IDNumb only 6 letters
n files i created have IDNumber its 8 letters ...
also some ppl write these output files with TrvlID again 6 letters instead of travelID....
I just dont want to bother them ...infact you as well ..but need some help...

can u explain the code how it is working?

Sorry for bothering you

Regards,
linuxUser_

---------- Post updated at 05:57 PM ---------- Previous update was at 05:42 PM ----------

its working perfectly for all cases ...sorry
Thanks a lot 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

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

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

Featured Tech Videos