From owner-freebsd-questions Mon Sep 24 8:29:48 2001 Delivered-To: freebsd-questions@freebsd.org Received: from rush.telenordia.se (mail.telenordia.se [194.213.64.42]) by hub.freebsd.org (Postfix) with SMTP id 648C037B414 for ; Mon, 24 Sep 2001 08:29:42 -0700 (PDT) Received: (qmail 8056 invoked from network); 24 Sep 2001 17:29:36 +0200 Received: from bb-62-5-36-29.bb.tninet.se (HELO there) (62.5.36.29) by mail.telenordia.se with SMTP; 24 Sep 2001 17:29:36 +0200 Content-Type: text/plain; charset="iso-8859-1" From: Mark Rowlands To: Paul Chvostek Subject: Re: silly sed question Date: Mon, 24 Sep 2001 17:29:36 +0200 X-Mailer: KMail [version 1.3] Cc: freebsd-questions@FreeBSD.ORG References: <20010924115816.EE2F637B418@hub.freebsd.org> <20010924090342.A10056@gahch.it.ca> In-Reply-To: <20010924090342.A10056@gahch.it.ca> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-Id: <20010924152942.648C037B414@hub.freebsd.org> Sender: owner-freebsd-questions@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Monday 24 September 2001 3:03 pm, Paul Chvostek wrote: > Hiya. > > On Mon, Sep 24, 2001 at 01:58:12PM +0200, Mark Rowlands wrote: > > I have a string > > > > TARGETS='blob1 blob2 blob3' > > > > and I wish to use to change this to > > > > TARGETS='blob1 blob2 blob3 blob4' > > > > for a multitude of files. > > > > I am having problems with the quotes > > > > sed -e '/^TARGETS s/'$/blob4'/' myfile > > > > ie find the line that begins with TARGETS and on that line swap the > > ending single quote with blob4 and a single quote > > > > is what I want to write and for sed to DWIM..... > > > > I have tried escaping quotes in various places, double quotes and the > > like but the correct incantation escapes me.......can anyone help > > Not silly at all. Escaping quotes is a black art. ;-) > > Assuming that any occurrance of /^TARGETS=/ would be fine to match, your > original method could be grottily achieved like this: > > sed -e '/^TARGETS=/s/'"\'"'$/ blob4&/' myfile > > In a pinch, if the escaped quotes don't behave as expected, you can also > refer to the single quotes with dots and backreferences, and maybe be > more approximate with your matching. That is: > > sed -e '/^TARGETS=/s/\(.\)$/ blob4\1/' myfile Where shall I send the beer ;-) Many thanks...... -- Sex is the most fun you can have without laughing. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message