Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: line continuation with sed

Thanks for the replies all:

	$ ls filename\ ending\ with\ a\ space\ <enter>

Ok, so it's an overload of the backslash, which might mean an escaped character, or might indicate line continuation.  I think in my example there'd be no difference but I understand your example where ... mind, people who end a filename with a space aren't fit to live ... but linux isn't going to stop you from doing it, so that case must be accommodated.  So then *only* 'backslash-newline' is a line continuation and any other variant leaves the backslash as an escape, yes?

Playing with it a bit more, sending the command to history and then recalling it I see the defect:

$ junk="now is the time
for all good men
to come to the aid
of the party"

... now run this script:

aa="print -l ${(q)junk} | sed \
-nre s/all/most/p \
-e s/men/persons/p \
-e s/aid/assistance/p"

print -rS "$aa"
eval $aa

... and get:

$ . test
for most good men
for most good persons
to come to the assistance

... recalling from history it works fine, but if I modify the '$aa' command with the 'backslash-space-newline' the recalled command looks like this:

print -l now\ is\ the\ time$'\n'for\ all\ good\ men$'\n'to\ come\ to\ the\ aid$'\n'of\ the\ party | sed -nre s/all/most/p -e s/men/persons/p \
-e s/aid/assistance/p

... so the bleeding backslash is literal ... I guess that's because the space does not 'escape'? ... but I thought you could put a backslash before any character?  Anyway we get a literal backslash and then a literal newline and naturally things go sour.  All this to accommodate servants of the Evil One who would end a filename with a space!

Seriously, I get it, thanks guys.  I don't like it, but i can see what gets feed to sed, and why it goes wrong, invisibly.


You can configure a number of editors to show this up.  In emacs,
for example, I use:

(setq-default show-trailing-whitespace t)

... I know it, but after my Debian upgrade whereas my editor used to show a nice little 'return' character/icon, it now shows a 'LF" backlit in white that's so annoying I turned it off :( ... so I'm a victim of that mistake.  I'd normally remove trailing spaces just to be tidy, nevermind disasters like the above.

Messages sorted by: Reverse Date, Date, Thread, Author