sed question


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sed question
# 1  
Old 05-31-2006
sed question

Hi

I am trying to replace an extension in a file name using sed as follows:

echo $filename | sed 's/.txt/.doc/'

My objective is to replace any extension with let's say a .doc extension. Right now, my input may have two extensions; .txt and .csv. I have to replace both with a .doc extension. If I use the following code, it does not seem to work. Any idea what might be the probable cause?

echo $filename | sed 's/.txt|.csv/.doc'

Does the above usage of regular expression not work with sed or am i missing some quotes somewhere?

Any pointers would be appreciated.

Thanks
Vikas.
# 2  
Old 05-31-2006
use this

Code:
a=myfile.csv
b=${a%.*}.doc
echo $b  

Variable 'a' can contain any extension.
# 3  
Old 05-31-2006
isn't it feasible thru sed?

Thanks for ur reply. However, i am still interested to know whether it is possible thru sed or not. The reason is, if it contains anything else than a .txt or .csv, i dont want to convert it into .doc.

So, as of now, i just want to convert a .txt or a .csv into .doc, otherwise i want to raise an error.

TIA
Vikas.
# 4  
Old 05-31-2006
Quote:
Originally Posted by Vikas Sood
echo $filename | sed 's/.txt|.csv/.doc'
The above becomes

Code:
echo $filename | sed -e "s/\.txt/\.doc/" -e "s/\.csv/\.doc/"

Mind you, the above will not change the actual file name. You will have to capture the modified name and then do a rename on the file.
# 5  
Old 05-31-2006
Thanks

Thanks Vino. It worked for me. Is it right to assume that the regular expression '|' does not work with sed and probably it is just meant to work with awk or grep?

Anyways, thanks again. It worked just fine.
# 6  
Old 05-31-2006
Quote:
Originally Posted by Vikas Sood
Thanks Vino. It worked for me. Is it right to assume that the regular expression '|' does not work with sed and probably it is just meant to work with awk or grep?

Anyways, thanks again. It worked just fine.
No, its not so...

could you please post an example where do u find this controversy ?
# 7  
Old 05-31-2006
Example

Hi

I started the thread with the example. To make it clearer, below is the real life example :

I receive a file with a timestamp appended to it from source system. If it is a compressed file using gzip utility, source (a mainframe system) could send it in all the following possible formats:

filename.gz.timestamp
filename.GZ.timestamp
filename.Gz.timestamp
filename.gZ.timesstamp

I have to replace .gz., .Gz., .gZ., .GZ. to a single dot to make the above names as filename.timestamp. Once i am done with this, I will append a .gz suffix at the end. So at the end of this operation, i will have following gzip file

filename.timestamp.gz

I can now go ahead and unzip it. I was trying to use the following form of sed earlier using regular expression but it did not work for me..

echo $filename|sed 's/.gz.|.Gz.|.gZ.|.GZ././'

With what Vino suggested later on, i could resolve the issue but was just wondering why I could not use the above form of regular expression with sed.

Hope that makes it clearer.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

SED question

I am trying to write a script that will take an input text file in the format person: place: phonenumber; person: place: phonenumber; person: place: phonenumber; ... and output it using sed too: Name ######## Location ######### Phone Number... (1 Reply)
Discussion started by: jmack56
1 Replies

2. Shell Programming and Scripting

Sed question

I need to replace the numbers with a new string. How can I give a wildcard for the different # of numbers sed '/abcdef/s/abcdef=*/abcdef=999999/'<foo>foo1 From: To: abcdef=1234 abcdef=999999 abcdef=12345 abcdef=999999 abcdef=123456... (10 Replies)
Discussion started by: beppler
10 Replies

3. Shell Programming and Scripting

sed question

hi i have a file with this line: variable=/export/home/oracle I want to change the file so that the path is replaced with the value of another variable var2=/tmp/anything. how to do this in sed? thx (4 Replies)
Discussion started by: melanie_pfefer
4 Replies

4. Shell Programming and Scripting

Sed Question 1. (Don't quite know how to use sed! Thanks)

Write a sed script to extract the year, rank, and stock for the most recent 10 years available in the file top10_mktval.csv, and output in the following format: ------------------------------ YEAR |RANK| STOCK ------------------------------ 2007 | 1 | Exxon... (1 Reply)
Discussion started by: beibeiatNY
1 Replies

5. UNIX for Dummies Questions & Answers

sed question

How would I use sed to print everything on the line after the regular expresion? I have a configuration file setting several variables. cfg.dat DDB = cpptest SUDBNAME = sucpptestdb host = cpptest Example I want to search for the regular expresion 'SUDBNAME =' and print everything on... (3 Replies)
Discussion started by: orahi001
3 Replies

6. Shell Programming and Scripting

sed question

I have a file that conatins following info Policy1=U|guestRoom=test1idCode=5(1):!:Amenity2=U|RoomId=testrma=4(1):!:| GuestRoomAmenity1=U|guestRoomId=testguest1id^rmaCode=5(1):!:| I need it to look like this Policy1=U|guestRoom=test1idCode Amenity2=U|RoomId=testrmaCode... (2 Replies)
Discussion started by: arushunter
2 Replies

7. Shell Programming and Scripting

sed question

Hi, :) can any body explain the following statement sed 's/\(\)- ]//g' cheers RRK (3 Replies)
Discussion started by: ravi raj kumar
3 Replies

8. Shell Programming and Scripting

sed question

Hi, When deleting lines using sed, as i understand the lines are redirected to the standard output. What i'm unclear about is how to actually modify the file? If I write the command sed '1,2d' test it will display lines one and 2 onto the screen however the file is not modified? I think my... (5 Replies)
Discussion started by: c19h28O2
5 Replies

9. Shell Programming and Scripting

sed question (again)

hello there, I have a sed question. I have a file (temp.srv), in it it has v1_host1 v2_host2 And I have another file (temp2.srv), in it is has v1_host3_date v1_host1 v2_host2 v2_host4_date v3_host5_date I had used a script to remove the name from temp2.srv base on the name inside... (3 Replies)
Discussion started by: ahtat99
3 Replies

10. Shell Programming and Scripting

Sed Question

Hi, Is there any way to traverse the file once and look for the following conditions in one sweep instead of going over the file 3 times with different search criteria...... sed -n '/^ORA-07445/ p' /tmp/t$$ > ${OERRFILE} sed -n '/^ORA-00600/ p' /tmp/t$$ >> ${OERRFILE} ... (1 Reply)
Discussion started by: YS2002
1 Replies
Login or Register to Ask a Question