From owner-freebsd-questions@FreeBSD.ORG Fri Mar 13 14:55:34 2009 Return-Path: Delivered-To: questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 969F31065674 for ; Fri, 13 Mar 2009 14:55:34 +0000 (UTC) (envelope-from david+dated+1237386563.c8ac2e@skytracker.ca) Received: from 3s1.com (3s1.com [209.161.205.12]) by mx1.freebsd.org (Postfix) with ESMTP id 039EC8FC21 for ; Fri, 13 Mar 2009 14:55:33 +0000 (UTC) (envelope-from david+dated+1237386563.c8ac2e@skytracker.ca) Received: from 3s1.com (localhost [127.0.0.1]) by 3s1.com (8.13.8/8.13.8) with ESMTP id n2DETOEo076821 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Fri, 13 Mar 2009 10:29:26 -0400 (EDT) (envelope-from david+dated+1237386563.c8ac2e@skytracker.ca) Received: (from david@localhost) by 3s1.com (8.13.8/8.14.1/Submit) id n2DETNPW076820 for questions@freebsd.org; Fri, 13 Mar 2009 10:29:23 -0400 (EDT) (envelope-from david+dated+1237386563.c8ac2e@skytracker.ca) X-Authentication-Warning: 3s1.com: david set sender to david+dated+1237386563.c8ac2e@skytracker.ca using -f Received: from [192.168.1.20] (twenty [192.168.1.20]) by 3s1.com (tmda-ofmipd) with ESMTP; Fri, 13 Mar 2009 10:29:13 -0400 Message-ID: <49BA6DBD.2010304@skytracker.ca> Date: Fri, 13 Mar 2009 10:29:17 -0400 User-Agent: Thunderbird 2.0.0.19 (Windows/20081209) MIME-Version: 1.0 To: Nikos Vassiliadis References: <20090312173436.GA51898@skytracker.ca> <49BA278D.5080800@gmx.com> In-Reply-To: <49BA278D.5080800@gmx.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: David Banning X-Virus-Scanned: ClamAV 0.94.2/9105/Fri Mar 13 07:58:59 2009 on 3s1.com X-Virus-Status: Clean X-Spam-Status: No, score=-1.4 required=5.0 tests=ALL_TRUSTED autolearn=failed version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on 3s1.com Cc: questions@freebsd.org Subject: Re: sed error "unescaped newline inside substitute pattern" X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 13 Mar 2009 14:55:35 -0000 Nikos Vassiliadis wrote: > 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<<>> > > 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\<<>> > > 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 The problem that I am having is that the input is from a web form - so I have to deal with it - I have to somehow modify it so it can pass sed.