replacing 1 character with many : tr


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers replacing 1 character with many : tr
# 8  
Old 10-20-2008
You can use any character to separate the parameters of the sed s command, you don't have to use /.

Try sed 's#i#oo#g' for example. # is unlikely to appear in a path name.
# 9  
Old 10-20-2008
Bug

/ will also work.....

echo "him" | sed 's/i/oo/g' will give you hoom
# 10  
Old 10-20-2008
Quote:
Originally Posted by Annihilannic
You can use any character to separate the parameters of the sed s command, you don't have to use /.

Try sed 's#i#oo#g' for example. # is unlikely to appear in a path name.
Ok, That seems interesting, thanks. I ll try out and get back.
# 11  
Old 10-27-2008
Thank you all

Hello,

I thank everyone who has tried to help me out in this topic. I have been able to code the script fine and ll post it being open source and a result of your help.

I am still to try out the awk.

Thank You.

Regards,
Himanshu Kansal
# 12  
Old 11-06-2008
Bug script

Sorry for the delay, I was away on a vacation. Here is the script :

Code:
################################################################################################
#
#ACTION : 1) Search for the required attribute in the specified file and update if found.
#	  2) Add attribute on user's wish if not found in file.	
#DATE   : October 21, 2008	  
#AUTHOR : Himanshu Kansal
#NOTES	: Updates required attributes, also those with '/' as part of value such as path values.
#	: Uses '^' as sed operator instead of traditional '/'.
#
################################################################################################

#!/bin/sh

addAttribute(){
	file=$1
	attrib=$2
	value=$3
	
	while [ ! "$choice" = "y" ]&&[ ! "$choice" = "Y" ]&&[ ! "$choice" = "n" ]&&[ ! "$choice" = "N" ]
	do
		echo "Do you want to add the attribute? y/n \c"
		read choice
		case "$choice" in
		[nN])
			echo "No Changes made to "$file
			exit 0
			;;
	
		[yY])
			cp $file htmp.txt
			echo "$attrib"'= '"$value" >> htmp.txt
			;;
		*)
			echo "Invalid Input\n"
			;;
		esac
	done
}

file=$1         # The File to edit
attrib=$2       # The attribute to edit
value=$3        # New value

if [ $# -ne 3 ]              						# Check for all required parameters
then
        echo "USAGE : h_edit.sh <filename> <attribute> <value>"         # Show usage for missing parameters
elif [ ! -s "$file" ]; then                                             # Check if file exists
        echo "File "$file" not found"
else
        grep '^'"$attrib"'=' $file > htmp.txt                           # Check if attribute exists
        if [ ! -s htmp.txt ]; then
                 echo "Attribute not found"
		 addAttribute $file $attrib $value
        else                                                            # Else update old value
                 sed "s^$attrib= .*^$attrib= $value^g" $file > htmp.txt # Store result in htmp.txt                 
        fi
	
	echo "\n\nNew File :- \n\n"
	cat htmp.txt							# Display Changes
	
	choice=""	
	while [ ! "$choice" = "y" ]&&[ ! "$choice" = "Y" ]&&[ ! "$choice" = "n" ]&&[ ! "$choice" = "N" ]
	do		
		echo "\n\nDo you want to save the file? \c"
		read choice
		case "$choice" in
		[nN])		
			echo "No Changes made to "$file
			exit 0
			;;
		[yY])
			mv htmp.txt $file
			;;				
		*)
			echo "Invalid Input"
			;;
		esac
	done
	
fi

Please give any feedback or ways to improve it. I would like to learn from my mistakes and improve.

Regards,
Himanshu Kansal

Last edited by hkansal; 11-07-2008 at 06:15 AM.. Reason: logical request from senior
# 13  
Old 11-06-2008
I think you should change the colour!! :-)

Apart from that the only recommendations I would make are:

- use a temporary file somewhere else, e.g. in /tmp, maybe using mktemp, or by adding the PID to make it unique, e.g. /tmp/htmp.$$, and remove it after use (if the users says no to "save changes").
- you have extra spaces in your sed script after the = which may prevent it matching and may also affect the parameters being set correctly, depending on what the file is used for. Same when you add a new attribute to the file.
# 14  
Old 11-06-2008
You might try sed 's/\//\\\//'
 
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