PowerShell script to run RegEx and Output results

Fidel from Brisbane has posted a very useful PowerShell script here, that you can use to run a regular expression search through a text file and extract only the matching hits.


When used with the RegEx search for Bates numbers discussed last night, it can be used to automatically extract a complete list of Bates numbers in any text file.


So if you start with a text file that looks like this:


. . . with Bates numbers at the end of each paragraph, you can run this PowerShell script:


select-string -Path C:\foofolder\input.txt -Pattern "(\b\w{1,10}(-|_|\s?)[0-9]{5,12}\b|\b\w{1,10}(-|_|\s?)\b\w{1,10}(-|_|\s?)[0-9]{5,12}\b)" -AllMatches | % { $_.Matches } | select-object Value -unique | sort-object Value > C:\foofolder\output2.txt


to pull out the Bates numbers. Note that you need to specify the path of your text file at:


select-string -Path C:\foofolder\input.txt


. . . put in the Regex in quotes at:


-Pattern "(\b\w{1,10}(-|_|\s?)[0-9]{5,12}\b|\b\w{1,10}(-|_|\s?)\b\w{1,10}(-|_|\s?)[0-9]{5,12}\b)" -AllMatches


. . . and then specify an output file at the end:


sort-object Value > C:\foofolder\output2.txt


You should end up with a text file that just lists the Bates numbers and has them sorted as well!