replacing 1 character with many : tr


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers replacing 1 character with many : tr
# 1  
Old 10-17-2008
replacing 1 character with many : tr

Hi All,

I would like to know how, iff at all we can, we may use the 'tr' command to replace a single character with multiple characters.

eg: if i have a string valued "him", how can i use 'tr' to replace 'i' with "oo" to make "hoom".

Just replacing a single character by many.
tried:-
Code:
echo "him" | tr 'i' 'oo'

but this results in "hom". Please guide.

Thank you.
# 2  
Old 10-17-2008
you want it from tr only because i suggest sed will be the better option
# 3  
Old 10-17-2008
Hi Vidya,

Thanks for the suggestion. Then pls let me try with sed myself first and I ll get back to you if unable to.Smilie

Thank You.
# 4  
Old 10-17-2008
Hi I tried using sed and following are the problems I faced:

1. sed operates on a file, I have to take value from a variable.
2. actually I need to replace '/' by '\/'. Here is some more detail if I am following the wrong track:

actually I have written a script that works on a file having attribute,value pairs in the format :
attribute= value
i have to search for an attribute and update it's value, iff the attribute and the file requested are found.

Now there are certain attributes which have paths, eg : source= /usr/java14/bin
If the user wants to update this value, according to the current script he needs to be intelligent enough to write the new value as \/usr\/bin, for example... i.e the user himself escapes all the '/'.

But i want to make it easy for the user, I hope I have explained my problem.
So how shall I approach?
(Pls avoid giving solutions directly and only hint, I want to trouble my brain) Smilie
# 5  
Old 10-17-2008
Hammer & Screwdriver Since you are asking for a hint...

What about using awk?
You have your script and the var_name1 you want to change; so match on that.
You know new_val2, so place that in the output of the awk print.

ok, to start you, and the following is not 'good syntax'

change_file looks like
var_qtr_file*/home/joe/qtr_2008
time_year_end*/users/somewhere/year2009


Code:
read change_file to line
var_name1=$(echo $line | cut -d"*" -f1)
new_val2=$(echo $line | cut -d"*" -f2)

now do your awk
(you could have done previous in awk too!)
figure out what needs to change
write new dataline out

# 6  
Old 10-17-2008
use this sed cmd
echo "him"|sed 's/i/oo/'
# 7  
Old 10-20-2008
Hi

Thanks for the valuable inputs. I have tried with sed as directed, worked. Now I am trying to use it in a similar way to get the exact solution
Replacing '/' by '\/'
I have tried:
Code:
sed 's/'\/'/'\\/'/' tmp.txt

this cannot be parsed as unix reads it as :
Code:
s///\//

Also i have tried to use the octal value of '/' i.e. :
Code:
echo "h/im" | sed 's/'\\057'/'p'/'

Accordingly, "h/im" must change to "hpim" but it does not change anything because it reads as
Code:
s///p/

I think I need to insert some single quotes by escaping, I ll get back after I ve tried. Pls correct me if I have gone wrong anywhere.

I did not try the awk because I am not familiar with awk, not UNIX either for that matter. I ll take that path once I have some idea of awk.

Thank You.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Replacing special character with sed

Hi All, I have a text file that contains I1SP2 *=*=Y=M=D001D My requirement is to replace all occurrence of =* to =Z expected o/p is I1SP2 *=Z=Y=M=D001D I have tried with sed 's/=*/=Z/g' file sed 's!\=*!\=Z/g' file sed 's!\=*!\=Z!g' file sed 's!\=\*!\=Z!g' file but its not... (3 Replies)
Discussion started by: gotamp
3 Replies

2. Shell Programming and Scripting

Replacing a character between two numbers

Hi, I need to replace a character between two numbers (specifically a - to a _). The problem is that they can be *any* numbers. So, I need a one liner to turn a file like this: 1-2 3-4 55-66 4323-12312893 into the following 1_2 3_4 55_66 4323_12312893 Any help would be appreciated! (5 Replies)
Discussion started by: mikey11415
5 Replies

3. Shell Programming and Scripting

replacing by newline character

I have a file (pema)with a single long record which i have to break up into multiple lines Input s1aaaaaaaaaaaaaaaaaaaaaaas1bbbbbbbbbbs1cccccccccc Output s1aaaaaaaaaaaaaaaaaaaaaaa s1bbbbbbbbbb s1cccccccccc m planning to do it by replacing s1 by \ns1 \n is the new line character i... (5 Replies)
Discussion started by: pema.yozer
5 Replies

4. Shell Programming and Scripting

Replacing the new character with spaces

Hi Experts, We are facing some while loading the "csv" file to target table.Some of the records are having values as : Account number,Name,Address "123","XYZ","302 Street,Washington,US" "456","PQR"," 3233 Some Street, Washington,US" In the above file instead reading only two records it... (11 Replies)
Discussion started by: Amey Joshi
11 Replies

5. Shell Programming and Scripting

Replacing the last character for each line in a file

Hello, I have a csv file and will like to replace the last character of each line in the file with Z (20 Replies)
Discussion started by: 123script
20 Replies

6. UNIX for Dummies Questions & Answers

Replacing a character in a line

Hi All I want to replace a character in a line, but position will be different form one iteration to another. So i m keeping the position i a variable. I am trying with following code pos=3 echo "Hello World, Good Morning" | sed 's/\(.\{$pos\}\)./\1Y/' But its not working, Can you... (2 Replies)
Discussion started by: Usha Shastri
2 Replies

7. UNIX for Dummies Questions & Answers

replacing a character

Hi All, contents of my file is like this: xxx xxx1 N N N 0 yyy yyy1 Y N N 0 i want to replace 1st N of xxx xxx1 N N N 0 line with Y. i. e i want the output like this: xxx xxx1 Y N N 0 how can i do this? please help. Thanks (8 Replies)
Discussion started by: Usha Shastri
8 Replies

8. Shell Programming and Scripting

replacing a character with another

hi i have a file and reading line by line, i need to replace 8-15 and 18-27 charaters with character 'x'. Eg: satyasatxxxxxxxsatxxxxxxxxxtyasatyasatyasatyasatyasatya please help thanks Satya (1 Reply)
Discussion started by: Satyak
1 Replies

9. Linux

replacing enter character in LINUX

Hi 1) I need to replace an "enter" character with another character. I thought it should be like this (E.G) replace all stirngs "LIAV"+enter with kokokoko: :1,$s/LIAV^M/kokokoko/g but it dose not work. 2) Also dose nayone know how to replace wildcards? for... (3 Replies)
Discussion started by: liav
3 Replies

10. UNIX for Dummies Questions & Answers

Replacing the last character

Hi , I need to change the last character of the line: ie: input file: (raj, muthu, mani, Output: (raj, muthu, mani); so i need to change the last comma by the closing braces so help me out in the issue. Thanks in advance. (2 Replies)
Discussion started by: ithirak17
2 Replies
Login or Register to Ask a Question