On 05/02/2018, at 12:25, Matthew London <[email protected] <mailto:[email protected]>> wrote: > I have a file with the following: > > &&& > TEXT STRING I WANT TO KEEP > ### > TEXT STRING I WANT TO DELETE > &&& > TEXT STRING I WANT TO KEEP > etc, > > Where there is a linebreak after &&&, ###, and all text strings
Hey Matthew, You weren't clear about whether your source text contains strings other than &&&…keep and ###…delete, so for the moment I'll assume these two types are the only content in the file. For information on installing and using BBEdit's text filters see (here <http://www.bbeditextras.org/wiki/index.php?title=Text_Filters>). This text-filter removes all but your keep text. It does this by finding your keep symbol and printing the following line. #!/usr/bin/env bash sed -En '/^&&&/{n;p;}' # Print next line after found regex. This text-filter prints the keep symbol and the following line. #!/usr/bin/env bash sed -En '/^&&&/,/[^[:blank:]]/{p;}' # Print found Regex and the next line after it. Sed is very quick and efficient for this sort of job, but it's not the only game in town. This text-filter uses egrep to find the regex and the line after it. It then uses sed to delete any record separators “--” egrep places between found records. #!/usr/bin/env bash egrep -i -A1 "^&&&" | sed -E '/^--/d' Output: &&& TEXT STRING I WANT TO KEEP &&& TEXT STRING I WANT TO KEEP We can build on the above and also delete the keep symbol. #!/usr/bin/env bash egrep -i -A1 "^&&&" | sed -E '/^(--|&&&)/d' Output: TEXT STRING I WANT TO KEEP TEXT STRING I WANT TO KEEP Lastly I'll trot out the 900lb gorilla — Perl. #!/usr/bin/env perl -sw while (<>) { print if $,; $, = /^&&&/ } Output: TEXT STRING I WANT TO KEEP TEXT STRING I WANT TO KEEP #!/usr/bin/env perl -sw while (<>) { print if /^&&&/; print if $,; $, = /^&&&/ } Output: &&& TEXT STRING I WANT TO KEEP &&& TEXT STRING I WANT TO KEEP -- Best Regards, Chris -- This is the BBEdit Talk public discussion group. If you have a feature request or would like to report a problem, please email "[email protected]" rather than posting to the group. Follow @bbedit on Twitter: <http://www.twitter.com/bbedit> --- You received this message because you are subscribed to the Google Groups "BBEdit Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/bbedit.
