sed - issue in replacing >


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sed - issue in replacing >
# 8  
Old 03-07-2015
Quote:
Originally Posted by RudiC
That was a bit too much - you can replace delimiters in s(ubstitute) commands, but not in addresses, so /output/ needs to stay /output/!
Actually you can replace those as well (but then the first delimiter needs to be escaped with a backslash):
Code:
$ PMTargetFilePath=/foo/bar
$ echo '<ATTRIBUTE NAME ="Output file directory" VALUE ="/abc/khi/"/>' | sed '\|Output|s|VALUE =[^>]*>'"|value = $PMTargetFilePath|"
<ATTRIBUTE NAME ="Output file directory" value = foo/bar


Last edited by Scrutinizer; 03-07-2015 at 04:56 PM..
These 4 Users Gave Thanks to Scrutinizer For This Post:
# 9  
Old 03-07-2015
Thanks Reviewers, I reached quite close to what I am looking for by working on your suggestion
Code:
 
sed '/Output/s|VALUE =[^>]*>'"|value = \"\$PMRootDir\\\data\\\output\\\\\"/>|g" <sampledataoncemore> result2

.
Additionally I also need to remove the file path prefixed to a file name example
Code:
<ATTRIBUTE NAME ="Output filename" VALUE ="/abc\khi/amv.txt/"/>

and
Code:
<ATTRIBUTE NAME ="Output file name" VALUE ="/abc\khi/amv.csv/"/>

should be
Code:
<ATTRIBUTE NAME ="Output filename" VALUE ="amv.txt/"/>

and
Code:
<ATTRIBUTE NAME ="Output file name" VALUE ="amv.csv/"/>

. I tried
Code:
sed '/"Output file name"/ s basename <samplefinaldata> result2

, but this is unterminated command. As i am very new to Unix , Kindly suggest what am I missing here .

Last edited by ajmani; 03-07-2015 at 05:05 PM.. Reason: Additiobal code tags
# 10  
Old 03-07-2015
Quote:
Originally Posted by ajmani
.
.
.
Code:
sed '/"Output file name"/ s basename <samplefinaldata> result2

.
.
.
There's an opening single quote right after sed, but the closing one somewhere before result2 is missing... and, while it seems possible to use spaces as delimiters for s(ubstitute) commands, it is quite misleading and error prone.

Last edited by RudiC; 03-07-2015 at 06:21 PM..
This User Gave Thanks to RudiC For This Post:
# 11  
Old 03-08-2015
Got your point and tried to correct the mistake by
Code:
sed '/"Output file name"/s basename <samplefinaldata>' result2

but it gives an error sed: command garbled. My requirement is to remove the filepath from number of filenames encountered in a file.
please help.
thanks Again.

---------- Post updated 03-08-15 at 10:23 AM ---------- Previous update was 03-07-15 at 10:04 PM ----------

Tried this one also
Code:
sed '/."Output file name"/s/basename<samplefinaldata>'result2

...but not getting the desired output.
# 12  
Old 03-08-2015
Code:
PMTargetFilePath=amv.txt/
sed '/ATTRIBUTE NAME *= *"Output file directory/ s|\(VALUE *= *\)"[^"]*"|\1"'"$PMTargetFilePath"'"|' result2

--
Your can assemble your (changing?) requirements in one multi-line sed statement:
Code:
sed '
/ATTRIBUTE NAME *= *"Output file directory"/ s|\(VALUE *= *\)"[^"]*"|\1"'"$PMRootDir"'"|
/ATTRIBUTE NAME *= *"Output file name"/ s|\(VALUE *= *\)"[^"]*"|\1"'"$PMTargetFilePath"'"|
' result2


Last edited by MadeInGermany; 03-08-2015 at 02:57 PM.. Reason: *"
This User Gave Thanks to MadeInGermany For This Post:
# 13  
Old 03-08-2015
thanks for looking into this, I managed to change the file directory additionaly I need to strip off the directory from filename as mentioned in post 9. I tried few commands like
Code:
grep "Output filename" inputfilename |xargs basename

, but this throws an error
Usage: basename string [ suffix ]
it would be great if you can help me on this. a sample line of my input file looks like
<ATTRIBUTE NAME ="Output filename " VALUE ="/could/be/anything/filename"/
<ATTRIBUTE NAME ="Output filename " VALUE ="/could/be\something.txt"/>
and I need
<ATTRIBUTE NAME ="Output filename " VALUE ="filename"/
<ATTRIBUTE NAME ="Output filename " VALUE ="something.txt"/>
# 14  
Old 03-08-2015
Just strip the characters up to the last / or \ within the " " after VALUE=:
Code:
sed '
/ATTRIBUTE NAME *= *" *Output file name *"/ s|\(VALUE *= *"\)[^"]*[/\]|\1|
/ATTRIBUTE NAME *= *" *Output filename *"/ s|\(VALUE *= *"\)[^"]*[/\]|\1|
' result2


Last edited by MadeInGermany; 03-08-2015 at 03:23 PM.. Reason: Allow \ in addition to / and allow addional spaces around "attribute name"
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