Thanks for the help, this is what I ended up using: set myShell to "egrep '^(696\\||873\\||981\\|)' " & quoted form of myFile It works, and I think I even know why. The \| is used by the shell to indicate a pipe is part of the string, right? With out it numbers like 696123| would also be returned (the \\ is needed to tell applescript that \ is part of the shell script) The second | is used as an or , right? Which allows me to send multiple strings in the same egrep command. As for efficiency, it takes about 7 seconds to search an entire file returning a few hundred matches to a single pattern and it take about 7 seconds to search an entire file returning a few thousand matches to 100+ patterns. So now I will write the results to a new file, then grep a pattern from that file that matches the third delimited item. Piece of cake, right? ES