Lately, I’ve prepared some PowerPoint slides for the scripting module of a course for ongoing system engineers. Now it’s time to share my work with the PowerShell community. The slides are about string manipulation. In this blog post we will deal with a text file of e-mail addresses. For furter processing, all content (domain names) of the right side of the @ are to be removed. The problem: The domain names are different.
So I decided to write a little script that does exactly what I need.
Starting point
Here is the text file with E-Mail addresses.
Now let’s move on manipulating the strings so that all domain names and @ will be removed and the output will be save in a new file.
The Code
Open PowerShell ISE. Copy the code below into your ISE session and change the path of the files in line 1 and 7.
$get=Get-Content C:\Temp\Mail.txt foreach ($g in $get) { $index=$g.IndexOf('@') $substring=$g.Substring(0,$index) Add-Content C:\Temp\usernames.txt -Value $substring }
The Result
After a few seconds the newly created output file will look like this:
Mission accomplished.
Hope that this was good template for your string manipulation duty.
Keep in mind that IndexOf and Substring are your best friends when it comes to string manipulation.
I am looking forward to ideas and suggestions in the comments.
Categories: PowerShell
Hi Patrick
Like all the time with Posh, there are different ways to reach the goal.
For my part I’m more familiar with the following :
$Names = foreach ($item in $data)
{
$item.split(“@”)[0]
}
Cutting the string with split method on @, then gather only first part ([0]). Here I feed a var called $Names, but we also can build a PSCustomObject in the foreach loop, to add some other values.
I.e. :
$Names = foreach ($item in $data)
{
[PSCustomObject]@{
Name = $item.split(“@”)[0]
Domain = $item.split(“@”)[1]
}
}
… and let’s go with the var $Names to later treatments.
Regards
Olivier
LikeLiked by 1 person
Thank you for sharing your approach using split and custom objects.
LikeLike