sed anomaly in bash script

Bob McGowan
Fri Nov 14 18:10:00 GMT 2014

On 11/14/14, 9:20 AM, "cyg Simple" <> wrote:

>$ TEST=`echo 'c:\windows' | sed -e s.\\.\\\\.g`
>$ echo $TEST
>TEST=`echo 'c:\windows' | sed -e s.\\\.\\\\\.g'
>echo $TEST
>$ bash -x
>++ echo 'c:\windows'
>++ sed -e 's.\.\g'
>sed -e expression #1, char 7: unterminated 's' command
>+ TEST=
>+ echo
>CYGWIN_NT-6.1 HOSTNAME 1.7.32(0.274/5/3) 2014-08-13 23:06 x86_64 Cygwin
>Does anyone have a suggestion on turning c:\windows into c:\\windows?
>cyg Simple

The combination of shell globbing and sed metacharacters, with appropriate
escaping, is rather difficult, and nearly impossible to read.

I would suggest using the 'sed -f file' so you can completely eliminate
any shell processing.

The file should contain the string 's/\\/\\\\/', without the quotes ;)

Of course, if you want your script to be in a single file, this won't
work, so one of the other responders answers may be more suitable.

FYI, I would suggest not using the dot as a pattern separator, it could be
confusing to novice readers, and also removes it as a pattern match


Problem reports:
Unsubscribe info:

More information about the Cygwin mailing list