2017-11-08 3 views
0

Wenn Sie eine vollständige Aufschlüsselung des Skripts und der Ergebnisse erhalten möchten, die ich bis jetzt erhalten habe, können Sie meinen vorherigen Beitrag referenzieren.Teilen einer Zeile in einem Array in 4 verschiedene Werte

Import the items from the pipeline in to an array

Ich versuche, herauszufinden, wie man nur die beiden Felder bekommen ich aus dem Array benötigen, so kann ich die Daten manipulieren. Jetzt zeigt das Array die gesamte Zeile als erstes Element im Array an.

$Date = (Get-Date -format "MM-dd-yyyy") 
$DateTime = (Get-Date) 

$Projects = Import-Csv c:\temp\pm_project.csv 
#Show me the entire list of Projects 
$Projects 
$TS_Entries = Get-Content "c:\temp\timesheet\$Date.txt" 
#Show me all the chosen entries in the text file 
$TS_Entries 
#Show me only the lines in the text file that match the regex statement 
$TS_Entries = Select-String -Path "C:\temp\TimeSheet\$Date.txt" -Pattern '(?>FOAH|PRJ)\d{1,10}' -allmatches | Select-Object -expand matches | Select-Object -expand Value 
$TS_Entries 
$TS_Entries | group -NoElement 

Ich kann nicht scheinen, das Zählelement im Array zu verwenden. Ich brauche in Count Wert jeder Wert zu erhalten und multiplizieren Sie sie mit 15. Das einzige, was ich in der unten stehenden Liste verweisen kann, ist Namen

Count Name 
----- ---- 
    2 FOAH278 
    1 FOAH519 
    1 FOAH704 
    3 FOAH718 
    2 FOAH780 
+0

Versuchen [ 'Flatten-Object'] (https://stackoverflow.com/a/46081131/1701026): $ TS_Final | Flatten-Objekt – iRon

+0

Könnten Sie bitte eine Textzeile angeben? Dies würde es viel einfacher zu helfen. – Snak3d0c

+0

@ Snak3d0c Ich habe einen Link zu meinem anderen Beitrag, der die Ergebnisse aus dem Skript bis zum Problembereich zeigt. https://stackoverflow.com/questions/47148500/import-the-items-from-the-pipeline-in-to-an-array – NobleMan

Antwort

0

Also ich bin nicht sicher, ich voll und ganz verstehen, was Sie fragen, aber hier geht:

So sagen Sie txtfile haben:

C:\temp\TimeSheet\11-06-2017.txt:1:11/06/2017 18:45:56 - This 15 minutes is dedicated to PROJECT 100 FOAH18 
C:\temp\TimeSheet\11-06-2017.txt:2:11/06/2017 18:45:58 - This 15 minutes is dedicated to PROJECT 90 FOAH278 
C:\temp\TimeSheet\11-06-2017.txt:3:11/06/2017 18:45:59 - This 15 minutes is dedicated to PROJECT 80 FOAH313 
C:\temp\TimeSheet\11-06-2017.txt:4:11/06/2017 18:46:00 - This 15 minutes is dedicated to PROJECT 70 PRJ0031905 
C:\temp\TimeSheet\11-06-2017.txt:5:11/06/2017 18:46:02 - This 15 minutes is dedicated to PROJECT 60 PRJ0031909 
C:\temp\TimeSheet\11-06-2017.txt:6:11/06/2017 18:46:03 - This 15 minutes is dedicated to PROJECT 50 PRJ0032045 

Das folgende Skript verwendet .NET Regex Klasse

$test = gc "C:\temp\stack.txt" 
$m = [regex]::Matches($test,'(?msi)((?<=Project)\d{0,}).*?(FOAH|PRJ)(\d{1,10})') 

Beispiel regex: https://regex101.com/r/yhgl9v/1

foreach($match in $m){ 
    write-host "ID:" $match.Groups[1].Value 
    write-host "Prefix:" $match.Groups[2].Value 
    write-host "Number:" $match.Groups[3].Value 
    "" 
} 

Diese Sie geben:

ID: 100 
Prefix: FOAH 
Number: 18 

ID: 90 
Prefix: FOAH 
Number: 278 

ID: 80 
Prefix: FOAH 
Number: 313 

ID: 70 
Prefix: PRJ 
Number: 0031905 

ID: 60 
Prefix: PRJ 
Number: 0031909 

ID: 50 
Prefix: PRJ 
Number: 0032045 

Ist es das Sie suchen?

+0

Alles ist im Moment perfekt. Ich habe die zwei Werte, die ich im letzten Block in diesem Beitrag brauche. Ich kann einfach nicht scheinen, diese Daten in eine CSV-Datei zu exportieren. – NobleMan

0
$test = gc "C:\temp\stack.txt" 
$m = [regex]::Matches($test,'(?msi)((?<=Project)\d{0,}).*?(FOAH|PRJ)(\d{1,10})') 
[email protected]() 
foreach($match in $m){ 

    $arr += [PSCustomObject]@{ 
    id = $match.Groups[1].Value 
    prefix = $match.Groups[2].Value 
    number = $match.Groups[3].Value 
    } 
} 

$arr | Export-Csv C:\temp\stock.csv -NoTypeInformation -Delimiter ';' 

So erstellen Sie eine customobject (Hash-Tabelle), die mit einem Mehrwert-Index-System funktioniert. Sobald Sie Ihr Array gefüllt haben, können Sie es später (außerhalb der Schleife) in eine CSV-Datei exportieren. Ihre CSV-Datei enthält:

"id";"prefix";"number" 
"100";"FOAH";"18" 
"90";"FOAH";"278" 
.... 
+0

BTW,? Msi sollte? Mi sein, das S wird nicht benötigt. – Snak3d0c

Verwandte Themen