Just FYI — though I'm sure that I could bump into limits — a grep string containing 182 addresses, configured as:

[email protected]\r|[email protected]\r|[email protected]\r| (… etc., replacing with nothing)

…worked with no problem.

Rick Gordon

--------------------
On December 18, 2017 at 9:34:00 PM [-0800],
Christopher Stone wrote in an email entitled
"Re: Max Character Length of Search String / Trimming Unsubscribed
Addresses from List":
On 12/18/2017, at 01:34, Rick Gordon <[email protected] <mailto:[email protected]>> wrote:
...
So what I'm wondering is how to determine how many addresses in this OR formation I could chain before making my search string get too long.

I'd also be interested to know what other approaches I might consider for trimming a list of one email address per line, removing addresses from a list of invalid or unsubscribed addresses.
------------------------------------------------------------------------

Hey Rick,

Don't mess with find/replace — use a text-filter.

Here are several options (although I'd probably go with the Perl).

(Make sure you have backups before testing any given solution.)

------------------------------------------------------------------------

*NOTE* - in the sed filters you need to escape any special characters in the email address, and the easiest way to do that is to use Cmd-E to enter it into BBEdit's Find dialog, open the dialog, and copy it out again.

------------------------------------------------------------------------

This will leave a hole everywhere a deletion is made, so you can see them.

#!/usr/bin/env bash

sed -E '
    s!smitj1234@students\.uwc\.edu!!g
    s!jane\.smith@uwc\.edu!!g
'

------------------------------------------------------------------------

If you have a one per line listing of email addresses then this will delete the given line.


#!/usr/bin/env bash

sed -E '
    /smitj1234@students\.uwc\.edu/d
    /jane\.smith@uwc\.edu/d
'

------------------------------------------------------------------------

Simplest — No escaping needed:

------------------------------------------------------------------------

If you want to delete a list of literal email address strings sourced from a “delete file” in the currently open BBEdit window:

#!/usr/bin/env bash

emailsToRemoveFilePath=~/'Downloads/Email Address to Remove.txt'
grep-Fvxf "$emailsToRemoveFilePath"

** You can use this same command with a file instead of a window, but you have to run the filter as a script rather than as a text-filter.

------------------------------------------------------------------------

Best?  Certainly the fastest for big files.

NOTE - the single quotes in the path strings. If you path has any spaces in it you either have to quote it or escape the spaces. I find quoted paths much easier to read.

------------------------------------------------------------------------

#!/usr/bin/env perl -sw

my $validEmails = glob("~/'Downloads/Valid Email Addresses.txt'");
my $invalidEmails = glob("~/'Downloads/Invalid Email Addresses.txt'");


# Open the files.
openF1 , "$validEmails"or die "Cant open : $! \n";
openF2 , "$invalidEmails"or die "Cant open : $! \n";

# Create the hash key with each line of the invalid items file.
while (<F2> ) {
        chomp;
        $file{$_}='';
}

# Print the line from the valid emails file — IF key does not exist in the hash.
while (<F1> )  {
        chomp ;
        print $_ , "\n"   unless(exists ( $file{$_} ) ) ;
}

------------------------------------------------------------------------

You can run the above Perl script via Cmd-R and get non-destructive output.

OR — you can run it as a text filter ON the valid email address file (in the front BBEdit window).

------------------------------------------------------------------------

Here's one way to do it with AppleScript and the Satimage.osax <http://www.satimage.fr/software/en/downloads/downloads_companion_osaxen.html>.

-------------------------------------------------------------------
# *REQUIRES* the Satimage.osax --> http://tinyurl.com/satimage-osaxen
-------------------------------------------------------------------

# Establish the file aliases.
*set* invalidFile *to* /alias/ ((*path to* /downloads folder/ as /text/) & "Invalid Email Addresses.txt") *set* validFile *to* /alias/ ((*path to* /downloads folder/ as /text/) & "Valid Email Addresses.txt")

# Scoop up the valid and invalid email addresses.
*set*invalidEmails*to**find text*"^\\S+@\\S+"ininvalidFile*with*regexp, all occurrences*and*string result *set*validEmails*to**find text*"^\\S+@\\S+"invalidFile*with*regexp, all occurrences*and*string result

# Remove invalid addresses from the valid list.
*set*newList*to**change*invalidEmailsinto""invalidEmails*with*regexp*without*case sensitive

# Output the new valid addresses to the console
*set*AppleScript'stext item delimiters*to*linefeed
*set*newList*to*newList*as*/text/
*set* newList *to* *change* "^$[[:blank:]]*$\\R?" into "" in newList *with* regexp *without* case sensitive

# Get file parent folder.
*tell* /application/ "Finder" *to* *set* fileParent *to* parent *of* validFile *as* /text/

# Create new valid address file path.
*set* newValidAddressFile *to* fileParent & "New Valid Email Addresses - " & (*strftime* (*get* *current date*) into "%Y.%m.%d · %H.%M.%S.txt")

# Write the new file.
*set*newFile*to**writetext*newListto/file/newValidAddressFile

-------------------------------------------------------------------

After thinking about it I'd do this differently — I'd make a duplicate of the valid file and then do the replacements directly in the file.

------------------------------------------------------------------------

--
Take Care,
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] <mailto:[email protected]>. To post to this group, send email to [email protected] <mailto:[email protected]>.
Visit this group at https://groups.google.com/group/bbedit.
___________________________________________
RICK GORDON
EMERALD VALLEY GRAPHICS AND CONSULTING
___________________________________________
WWW: http://www.shelterpub.com

--
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.

Reply via email to