From owner-freebsd-questions@FreeBSD.ORG Fri Jun 15 12:47:22 2007 Return-Path: X-Original-To: freebsd-questions@freebsd.org Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C3CD916A485 for ; Fri, 15 Jun 2007 12:47:22 +0000 (UTC) (envelope-from nvass@teledomenet.gr) Received: from wmail.teledomenet.gr (wmail.teledomenet.gr [213.142.128.16]) by mx1.freebsd.org (Postfix) with ESMTP id 8314713C447 for ; Fri, 15 Jun 2007 12:47:22 +0000 (UTC) (envelope-from nvass@teledomenet.gr) Received: from iris (unknown [192.168.1.71]) by wmail.teledomenet.gr (Postfix) with ESMTP id 7553F1C918A; Fri, 15 Jun 2007 15:47:21 +0300 (EEST) From: Nikos Vassiliadis To: Olivier Regnier Date: Fri, 15 Jun 2007 15:46:53 +0300 User-Agent: KMail/1.9.1 References: <467269EE.6090001@oregnier.net> <200706151404.47348.nvass@teledomenet.gr> <467284F9.7090005@oregnier.net> In-Reply-To: <467284F9.7090005@oregnier.net> X-NCC-RegID: gr.telehouse MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Content-Disposition: inline Message-Id: <200706151546.55080.nvass@teledomenet.gr> Cc: freebsd-questions@freebsd.org Subject: Re: problem with sed command and csh 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, 15 Jun 2007 12:47:22 -0000 On Friday 15 June 2007 15:24, Olivier Regnier wrote: > Nikos Vassiliadis a écrit : > > On Friday 15 June 2007 13:29, Olivier Regnier wrote: > >> Hi everybody, > >> > >> Actually, i'm working on FreeBSD 6.2 and csh shell. With a sh script, > >> i trying to execute this command : > >> sed -e "s/MAKE_ARGS\([^{]*\){/MAKE_ARGS\1{\n\t'mail/nbsmtp' => > >> 'WITH_IPV6=1 WITH_SSL=1',/" > /usr/local/etc/pkgtools.conf > >> > >> The result is not correct, i have an error : > >> sed: 1: "s/MAKE_ARGS\([^{]*\){/M . . .": bad flag in subsitute > >> command: 'n' > >> > >> Can you help me please ? > > > > s/MAKE_ARGS\([^{]*\){/MAKE_ARGS\1{\n\t'mail/nbsmtp' => > > This n is invalid--------------------------^^^ > > > > You should add a backslash before each slash > > that is not used as a separator for the s command. > > E.g. > > s/I want to substitute the \/ character/with the _ character/ > > s/\/\/\//three slashes/ > > > > You can also use a separator of choice for the s command. > > That is: > > s/foo/bar/ is equivalent to s@foo@bar@ > > is equivalent to sAfooAbarA > > is equivalent to s1foo1bar1. > > > > keep in mind, that our sed might not be > > totally compatible with GNU sed. > > > > HTH, Nikos > > Thank for you anserw but the result is bad again :) > I tryed this : sed "s/MAKE_ARGS\([^{]*\){/MAKE_ARGS\1{\n\t'mail\/nbsmtp' > => 'WITH_IPV6=1 WITH_SSL=1',/" > /usr/local/etc/pkgtools.conf > but i have this with cat /usr/local/etc/pkgtools.conf > > MAKE_ARGS = {nt'mail/nbsmtp' => 'WITH_IPV6=1 WITH_SSL=1', > } > > Sed and csh is strange no ? I think \n \t not supported by csh. No, its sed. You cannot use backslash notation with BSD sed. nik:0:~$ sed "s/foo/\t\n/" foo tn You can use a literal tab character, but not a literal newline character... How about this? nik:0:~$ echo foo | awk '{ sub(/foo/, "foo\n\tbar"); print; }' foo bar HTH, Nikos