|
Re: Unexpected replacement: msg#00057editors.sed.user
On Wed, 14 Dec 2005 21:59:11 +0800, gregh_oh wrote: > Good day sedders, > > I am trying to write a simple batch file to do some replacements > within an XML file using GNU sed version 4.0.7 on Windows XP. > > Here is the line (#62)I'm targeting: > > <menutree:TREENODE TEXT="Updates" EXPANDED="true" > TREENODESRC="xmlfiles/Menu.xml" IMAGEURL="images/folder.gif" > EXPANDEDIMAGEURL="images/folderopen.gif" FILENAME=""/> > Judging from the result you give, the last 3 lines were actually one wrapped long line. > Here is the snipit from the batch file that invokes sed: > > SET /P Choice=Enter tree node text and press Enter: > sed 62s/TREENODE\x20TEXT.*EXPAND/TREENODE\x20TEXT\x3D\x22"% > Choice%"\x22\x20EXPAND/ <..\Incrementals.html > tmp.txt > 3 hints: 1st. '.*' pattern is greedy which means it will match a string as long as possible. 2nd. Enclose your sed script with " on Windows, especially when there is environment varviable in it. 3rd. Sed can either read input from stdin or files, so '<' in your script can be omitted. 4th. There are metacharacters. Use them. > My expectation is that user input text from the variable %Choice% > replaces "Updates". However, given an input of: New Node Name, here > is what ends up in tmp.txt: > > <menutree:TREENODE TEXT="New Node Name" EXPANDEDIMAGEURL="images/folderopen.gif" FILENAME=""/> > > Why is sed not stopping at the first occurence of EXPAND? > I'm sure that the answer is simple, but I just can't see it. > solution1. Change the portion of your script from: TEXT.*EXPAND to: TEXT=[^=]*EXPAND solution2. Use more metacharacters. sed -r "62s/(TREENODE TEXT=.)[^\x22]*/\1%Choice%/" ..\Incrementals.html -- Regards, hq00e ------------------------ Yahoo! Groups Sponsor --------------------~--> Most low income homes are not online. Make a difference this holiday season! http://us.click.yahoo.com/5UeCyC/BWHMAA/TtwFAA/dkFolB/TM --------------------------------------------------------------------~-> -- Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/sed-users/ <*> To unsubscribe from this group, send an email to: sed-users-unsubscribe@xxxxxxxxxxxxxxx <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/ |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: Unexpected replacement: 00057, Angus Leeming |
|---|---|
| Next by Date: | Re: Unexpected replacement: 00057, Greg Henderson |
| Previous by Thread: | Re: Unexpected replacementi: 00057, Angus Leeming |
| Next by Thread: | Re: Unexpected replacement: 00057, Greg Henderson |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |