Re: ed scripts in Windows command shell
Kam-Hung Soh <[email protected]>
| Newsgroups | gmane.comp.gnu.utils |
|---|---|
| Organization | Private |
| Message-ID | <[email protected]> |
[email protected] wrote: > On May 17, 12:14 am, "Kam-Hung Soh" <[email protected]> wrote: >> On Fri, 16 May 2008 07:27:53 +1000, <[email protected]> wrote: >>> On May 14, 4:24 pm, [email protected] wrote: >>>> Although I have experience with diff and ed on *nix, I just can't seem >>>> to get ed to work in the Win32 environment (cmd.exe). >>>> diff -e oldfile newfile > script.ed >>>> gives the proper ed commands, but any variation of >>>> type script.ed | ed oldfile > result >>>> just won't work: I get either an empty result, or the last line of the >>>> original file repeated a few times in the result. I've tried 'for' >>>> loops with 'echo' and 'type', appending 'w' and 'q' commands to >>>> script.ed, and all sorts of variations. Still no luck. >>>> Has anyone had success using 'ed' commands with Win32? >>>> P.S. I want to use the 'ed' output from diff, since several 'ed' >>>> commands can be concatenated together to apply several changes - >>>> unlike 'context' and 'unified' diffs that have to be appiled >>>> individually against each intermediate result. >>> P.P.S. >>> I'm trying to use the GnuWin32 ed utility. >> This worked: >> >> ed < script.ed oldfile >> >> Note that script.ed has "w" at the end to tell ed to write the changes. >> >> If you have multiple ed script files generated by diff, then concatenate >> all the script files and append "w" into one script file. In cmd.exe: >> >> (cat f1 f1 ... && echo w) > script.ed >> >> Don't know GnuWin32's ed doesn't accept input from a pipe. >> >> -- >> Kam-Hung Soh <a href="http://kamhungsoh.com/blog">Software Salariman</a>- Hide quoted text - >> >> - Show quoted text - > > Thanks for the reply. > > Even when script.ed has a "w" (or "w" and "q") appended to it, > oldfile remains unchanged. :-/ > > script.ed: > > 78a > > public void noop(); > . > w > > ---- > > ed < script.ed oldfile > > doesn't change oldfile > > ed oldfile < script.ed > > doesn't change oldfile > > I've had success with GnuWin32 'patch', applying incremental diffs, > but just can't get 'ed' to work. If not for your 'This worked", I > would conclude that 'ed' just can't be used this way in a Win32 > environment. > > - Randall What a puzzle. Which version of "ed" are you using? Mine is: C:\Temp>ed --version GNU ed version 0.2 -- Kam-Hung Soh <a href="http://kamhungsoh.com/blog">Software Salariman</a>