Reputation: 2039
I am reading in a text file that contains a specific format of numbers. I want to figure out if the first character of the line is a 6 or a 4 and store the entire line in an array for use later. So if the line starts with a six add the entire line into sixArray and if the line starts with a 4 add the entire line into fourArray.
How can I check the first character and then grab the remaining X characters on that line? Without replacing any of the data?
Upvotes: 13
Views: 26056
Reputation: 36322
Use:
$Fours = @()
$Sixes = @()
GC $file|%{
Switch($_){
{$_.StartsWith("4")}{$Fours+=$_}
{$_.StartsWith("6")}{$Sixes+=$_}
}
}
Upvotes: 4
Reputation: 68321
If you're running V4:
$fourArray,$sixArray =
((get-content $file) -match '^4|6').where({$_.startswith('4')},'Split')
Upvotes: 5
Reputation: 2494
Something like this would probably work.
$sixArray = @()
$fourArray = @()
$file = Get-Content .\ThisFile.txt
$file | foreach {
if ($_.StartsWith("6"))
{
$sixArray += $_
}
elseif($_.StartsWith("4"))
{
$fourArray += $_
}
}
Upvotes: 18
Reputation: 1095
If it's me I'd just use a regex.
A pattern like this will catch everything you need.
`'^[4|6](?<Stuff>.*)$'`
Upvotes: 0