Date: Fri, 4 Mar 2016 05:35:57 +0100 From: Polytropon <freebsd@edvax.de> To: David Banning <david+dated+1457496338.968870@skytracker.ca> Cc: questions@freebsd.org Subject: Re: sed help please Message-ID: <20160304053557.ff32d984.freebsd@edvax.de> In-Reply-To: <20160304040536.GA7729@skytracker.ca> References: <20160304040536.GA7729@skytracker.ca>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 3 Mar 2016 23:05:36 -0500, David Banning wrote: > I am trying to change hundreds of lines of text. Given the following text; > > line 1 > line 2 foo take this text > line 3 > line 4 > line 5 bar leave this text > line 6 > line 7 > > I need a sed command that would take everything between foo and bar - > including foo and bar. > > Ideally the output would look like; > > line 1 > line 2 > leave this text > line 6 > line 7 > > Keep in mind that foo and bar appear in different > locations - sometimes at the beginning of a line, sometimes at the end, > and sometimes in the middle. Does it have to be sed? When I read your requirement, I immediately thought about the EXAMPLES section in "man awk", where you'll find: /start/, /stop/ Print all lines between start/stop pairs. You could try this first: awk -f '/foo/, /bar/' < input.txt > output.txt Not verified, though. > I found someone who posted the following > solution; > > sed '/foo/,/bar/{s/./x/g}' file > > but I found that this does not execute under FreeBSD. I have looked > around for differences between FreeBSD and other unix like SED operations > but only see the -s "", regarding backup file. If this works in GNU sed, you can install it (textproc/gsed) and the use this command. > Any pointers would be helpful. void *some, *helpful, *pointers; :-) -- Polytropon Magdeburg, Germany Happy FreeBSD user since 4.0 Andra moi ennepe, Mousa, ...
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20160304053557.ff32d984.freebsd>