Warning: PowerShell-newb at work.
I got a .csv-file that I am trying to filter and split in different parts. The data looks s.th. like this (much more columns in real)
column1; column2; column3; column4; column5; column6; column7
DATA;012594;50;400;1;123456789;87986531;
DATA;012594;50;401;1;456321564;53464554;
DATA;012594;50;402;1;321567894;54634858;
DATA;012594;51;400;1;312354684;38768449;
DATA;012594;51;410;1;123153167;54648648;
I now need do 2 steps:
1st: Filter the data for rows that have only column4
= '400'. Also picking just some columns as not all are of interest to me. And adding some custom columns at this point aswell.
2nd: Split and save the rows in 2 different files depending whether column3
is '50' or '51'.
$files = Get-ChildItem .\test\*.csv
foreach ($file in $files) {
$fname = $file.Name
$data = (Get-Content -path $file) | Select-Object -skip 1 | Foreach-Object {
$_ -replace '\|',';'
} | Set-Content -Path ".\test-out\${fname}"
foreach ($rec in $data){
$status = $rec.Substring(16,3)
if ($status -eq "400"){
Write-Warning "400 found"
$csv400q = [PSCustomObject]@{
'column 1' = $rec.'column 1'
'column 2' = $rec.'column 2'
'column 3' = $rec.'column 3'
'column 4' = $rec.'column 4'
'column 5' = $rec.'column 5'
'column 6' = $rec.'column 6'
'column 7' = $rec.'column 7'
'new column1' = 'static text'
'new column2' = 'static text'
'new column3' = 'static text'
}
$csv400o += $csv400q
}
}
$csv400o | Export-Csv -Path ".\test-out\${fname}" -Delimiter ";" -NoTypeInformation
#Step #2 should be here
foreach ($rec in $data) {
$lunk = $rec.Substring(13,2)
if ($lunk -like "50") {
} elseif ($lunk -like "51") {
}
}
}
THe files are much larger than this example. But for this sample data the desired outcome would be
file50.csv
column1; column2; column3; column4; column5; column6; column7
DATA;012594;50;400;1;123456789;87986531;
file51.csv
column1; column2; column3; column4; column5; column6; column7
DATA;012594;51;400;1;312354684;38768449;
I just used some parts of previously used code. If that's the completly wrong direction - don't hesitate to say so.
Thank you in advance!