sed: altered results in bash and cmd
Markus Schönhaber
mks@schoenhaber.de
Sat Dec 4 11:17:00 GMT 2004
fergus wrote:
> To delete all lines beginning with a <space> in a text file, this
> command (a) seems correctly composed and (b) works:
>
> sed '/^ .*$/d' filename
>
> but if I use it in a cmd window, the result is that all lines
> _containing_ a space are deleted, not just those beginning with a space.
>
> In general, and assuming PATHs etc correctly set, should not Cygwin
> command lines work identically in bash and cmd windows? Is this a
> problem with sed, with (my) command line syntax above, or with my
> understanding of what should work when?
>
The difference in behaviour you are seeing results from the difference
in the way cmd and bash interpret command lines and pass the resulting
arguments to the specified commands.
Compare:
C:\>E:\cygwin\bin\echo.exe '/^ .*$/d'
/ .*$/d
C:\>
to:
mks ~
$ /cygdrive/e/cygwin/bin/echo.exe '/^ .*$/d'
/^ .*$/d
mks ~
$
As you can see, the '^' isn't passed to echo.exe by cmd. I'm not really
sure but I think cmd doesn't treat single quotes as quoting characters -
at least not in the way bash does.
If you use double quotes, it shout work in cmd:
C:\>E:\cygwin\bin\echo.exe "/^ .*$/d"
/^ .*$/d
C:\>
BTW: '/^ /d' shoud be enough to achieve what you are trying to.
Regards
mks
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
More information about the Cygwin
mailing list