Date: Fri, 13 Mar 2009 11:29:49 +0200 From: Nikos Vassiliadis <nvass9573@gmx.com> To: David Banning <david+dated+1237311277.37b93e@skytracker.ca> Cc: questions@freebsd.org Subject: Re: sed error "unescaped newline inside substitute pattern" Message-ID: <49BA278D.5080800@gmx.com> In-Reply-To: <20090312173436.GA51898@skytracker.ca> References: <20090312173436.GA51898@skytracker.ca>
next in thread | previous in thread | raw e-mail | index | archive | help
David Banning wrote: > Here is the php line that gives the error; > > cat start_text | sed "s/--maintext--/$test/" > endtext > > give error; > > sed: 1: "s/--maintext--/ Comment ...": unescaped newline inside substitute pattern > > where $test contains customer input from a website form > > There is something about the content of the text within the variable $test that is causing the error. > > Any pointers would be helpful. You cannot use unescaped newlines in the replacement string: # sed 's/foo/foo<<<Press enter here>>> > bar/' sed: 1: "s/foo/foo bar/": unescaped newline inside substitute pattern You have to precede each newline character with a backslash: # sed 's/foo/foo\<<<Press enter here>>> > bar/' foo foo bar The examples above are made using the bourne shell. The above doesn't work in csh. It's the documented behavior: 2. The escape sequence \n matches a newline character embedded in the pattern space. You cannot, however, use a literal newline character in an address or in the substitute command. ... A line can be split by substituting a newline character into it. To specify a newline character in the replacement string, precede it with a backslash. I am sure there is some good reason behind this... OT, you should not pass parameters to shell scripts using double quotes, since the shell will evaluate possible variable values: # echo "$OSTYPE" FreeBSD # echo '$OSTYPE' $OSTYPE I really doubt you want the first behavior, that is, variable evaluation for strings coming from a web server. HTH, Nikos
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49BA278D.5080800>