sed - issue in replacing >


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sed - issue in replacing >
# 1  
Old 03-07-2015
sed - issue in replacing >

Hi Gurus,

I am having trouble in replacing > symbol in a text line . I have number of special characters in this line like /,\,> and " etc.
the line looks something like
Code:
<ATTRIBUTE NAME ="Output file directory" VALUE ="/abc/khi/"/>

. I need to change this path, so I was trying to replace everything between VALUE = AND >
But as there are special characters here , I thought of first replacing them all. could successfully alter /,\ and " , but when trying to replace > , the sed doesn't returns anything. I am using
Code:
sed -e '/.Output file directory/s/\>/~/g'

.
can somebody please point out the error.
thanks in advance.

Last edited by Scrutinizer; 03-07-2015 at 07:08 AM.. Reason: CODE tags
# 2  
Old 03-07-2015
Like so?
Code:
$ echo '<ATTRIBUTE NAME ="Output file directory" VALUE ="/abc/khi/"/>' | sed 's/VALUE =[^>]*>/new text/'
<ATTRIBUTE NAME ="Output file directory" new text

This User Gave Thanks to Scrutinizer For This Post:
# 3  
Old 03-07-2015
Thanks for your prompt response , but I am a newbie to Unix and just trying to learn and understand the code. your code helps but doesn't gives desired output.it gives ,
Code:
<ATTRIBUTE NAME ="Output file directory" $PMTargetFilePath

, but my requirement is to find the line containing output file directory and change it to
Code:
<ATTRIBUTE NAME ="Output file directory" VALUE ="$PMTargetFilePath"/>

refrencing your code , I tried
Code:
sed 's/VALUE=[^>]*>/value = \"$outputfilepath\"\/\>' <inputfile> outputfile

, but this is giving an error . Please help...
Thanks a lot.

Last edited by Don Cragun; 03-08-2015 at 01:56 AM.. Reason: Add CODE tags.
# 4  
Old 03-07-2015
Try:
Code:
$ PMTargetFilePath=/foo/bar
$ echo '<ATTRIBUTE NAME ="Output file directory" VALUE ="/abc/khi/"/>' | sed 's|VALUE =[^>]*>'"|value = $PMTargetFilePath|"
<ATTRIBUTE NAME ="Output file directory" value = /foo/bar

Here, instead of the standard forward slash (/) a vertical pipe (|) has been used to delimit the RE and the replacement part:

Quote:
Substitute the replacement string for the first instance of the regular expression in the pattern space. Any char-
acter other than backslash or newline can be used instead of a slash to delimit the RE and the replacement. Within
the RE and the replacement, the RE delimiter itself can be used as a literal character if it is preceded by a back-
slash.
This User Gave Thanks to Scrutinizer For This Post:
# 5  
Old 03-07-2015
I referenced the code , that you have provided and with slight modifications I could advance a little more towards the desired output , however right now its replacing the filepath in all lines that contain "VALUE", though I want the path changed only for output files, i tried
Code:
sed -e '/.Output file directory /s/VALUE =[^>]*>'"/value = \"\$PMRootDir\\\data\\\output\\\\\"/>/g" <sampledataoncemore> result2

but this throws sed command garbled error and if i modify the code to use | delimiter
Code:
sed -e'|Output|s|VALUE =[^>]*>'"/value = \"\$PMRootDir\\\data\\\output\\\\\"/>|g" <sampledataoncemore> result2

I get
Code:
Unrecognized command: |Output|s|VALUE =[^>]*>/value = "$PMRootDir\\data\\output\\"/>|g

Request you to look into this and advice.
thanks again.
Moderator's Comments:
Mod Comment Please use CODE tags for sample input, output, and code.

Last edited by Don Cragun; 03-08-2015 at 03:00 AM.. Reason: Add more CODE tags.
# 6  
Old 03-07-2015
That was a bit too much - you can replace delimiters in s(ubstitute) commands, but not in addresses, so /output/ needs to stay /output/!
This User Gave Thanks to RudiC For This Post:
# 7  
Old 03-07-2015
Thanks for looking into this , I used backslash as delimiter I first piece of code but as it was throwing error I tried using a pipe delimiter. I am really not sure where have I altered the slash in path . Could you please point it out .
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Not replacing using sed

Hi all, I am trying to change the below word. but the changes is not reflecting in the new file sed -n 's/apple/orange/' filename ---------- Post updated at 12:51 AM ---------- Previous update was at 12:41 AM ---------- I tried this it works perl -pi.bak -e... (9 Replies)
Discussion started by: ramkumar15
9 Replies

2. Shell Programming and Scripting

sed not replacing

Data not replacing using sed,please check below. Replace_value=$$dbconn_target Search_value=$$dbcon_source   sed -e s/\${Search_value}/\${Replace_value}/g intrepid_sps_val.parm (2 Replies)
Discussion started by: katakamvivek
2 Replies

3. Shell Programming and Scripting

Replacing using sed

hi Guys, I have a rar file which consists of 10 files. each file has a space in its file name. how can i replace all spaces with _ i can replace them using sed but the thing is i need to replace using a script and not command. can anyone help me out??:confused: (2 Replies)
Discussion started by: rajeshb6
2 Replies

4. Shell Programming and Scripting

replacing by sed

hi my input file has got >,,,, or >, or >,,,,,, there are independent number of commas after >.... i want the o/p as > only that is just to remove "," after">" another is: i want to replace the last line of the file and to replace it by "hello"...how to do?... any nice script plz help (2 Replies)
Discussion started by: Indra2011
2 Replies

5. Shell Programming and Scripting

Need help with SED for replacing an IP

I need some advice to replace 10.183.x.x with 10.174.17.55 in a file containing multiple 10.183.x.x. Any help would be highly appreciated. (1 Reply)
Discussion started by: sags007_99
1 Replies

6. Shell Programming and Scripting

sed inside sed for replacing string

My need is : Want to change docBase="/something/something/something" to docBase="/only/this/path/for/all/files" I have some (about 250 files)xml files. In FileOne it contains <Context path="/PPP" displayName="PPP" docBase="/home/me/documents" reloadable="true" crossContext="true">... (1 Reply)
Discussion started by: linuxadmin
1 Replies

7. Shell Programming and Scripting

replacing ' with '' using sed

Hi, I have a text file and I would like to replace all occurrences of single quote ' with two consecutive single quotes '' . I have tried sed s/\'/\'\'/ < Folder/outputFile.txt > Folder/otherFile.txt but this replaces only the first occurrence of ' with ''. I want it to replace all the single... (7 Replies)
Discussion started by: DushyantG
7 Replies

8. Shell Programming and Scripting

SED: replacing

Hello, I was looking around, but could not find the answer, so I hope you ppl can help me. I want simply to replace text.:rolleyes: I found out SED would be good for this task.:b: So I tried: :confused: 1.) find text in a line and replace this particular line: for finding... (3 Replies)
Discussion started by: unknown7
3 Replies

9. Shell Programming and Scripting

replacing using sed

its again sed question. i have line - sed "s/$old/$new/g" "$f" > $TFILE && mv $TFILE "$f" working well if old="myoldfile" new="mynewfile" but if i want old="/home/shailesh/1test/" new="/home/shailesh/workspace/" it gives error like sed: -e expression #1, char 9: unknown option to... (2 Replies)
Discussion started by: shailesh_arya
2 Replies

10. Shell Programming and Scripting

Replacing in SED

I want to change the false in Node 1 to true. How do I do that? <Node1> <Usage>false</Usage> <Url>ABC</Url> </Node1> <Node2> <Usage>false</Usage> <Url>DEF<Url> </Node2> (8 Replies)
Discussion started by: superprogrammer
8 Replies
Login or Register to Ask a Question