sed help please
Warren Block
wblock at wonkity.com
Fri Mar 4 15:56:29 UTC 2016
On Thu, 3 Mar 2016, 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. 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.
FreeBSD's sed and awk are... well, let's say "historical". Perl has
much more powerful regular expressions, character classes, and slurp
mode.
However, this bit of Perl reads a file from stdin or as a following
argument and removes everything between the "foo" and "bar", inclusive:
perl -0777 -pe 's/foo.*?bar//sg'
More information about the freebsd-questions
mailing list