Powershell Ausgabe Liste in Tabelle konvertieren
Hallo zusammen,
ich habe eine umfangreiche Text Datei die mit Leerzeichen getrennt ist. Diese möchte ich einlesen und nach diversen Werten Filtern.
Klappt auch großteils, nur manchmal sind Werte enthalten, nach denen ich gar nicht suche wie z.B. run_count=1 ; resources_used.cput=
Meine Frage nun bzw. das Problem das ich habe. Wie bekomme ich die Ausgabe in Tabellen Form hin?
ein Format-Table ; export-csv ; set-content habe ich bereits probiert. Hat jemand einen Löösungsansatz?
Beispiel Einzulesende Datei:
Das Skript:
Ausgabe:
Danke schonmal!
Michael
ich habe eine umfangreiche Text Datei die mit Leerzeichen getrennt ist. Diese möchte ich einlesen und nach diversen Werten Filtern.
Klappt auch großteils, nur manchmal sind Werte enthalten, nach denen ich gar nicht suche wie z.B. run_count=1 ; resources_used.cput=
Meine Frage nun bzw. das Problem das ich habe. Wie bekomme ich die Ausgabe in Tabellen Form hin?
ein Format-Table ; export-csv ; set-content habe ich bereits probiert. Hat jemand einen Löösungsansatz?
Beispiel Einzulesende Datei:
04/01/2022 03:51:30 E 3008.servername user=vorname.nachname group=users project=_pbs_project_default jobname=jobname_blabla queue=pt ctime=1648734089 qtime=1648734089 etime=1648755842 start=1648755875 exec_host=cn008/0*24 exec_vnode=(cn008:ncpus=24:mem=196608000kb) Resource_List.mem=192000mb Resource_List.mpiprocs=24 Resource_List.ncpus=24 Resource_List.nodect=1 Resource_List.place=free Resource_List.select=1:ncpus=24:mem=192000mb:mpiprocs=24 Resource_List.software=Software_Name Resource_List.Lizenzen_lic=23 Resource_List.walltime=720:00:00 session=106759 end=1648777890 Exit_status=0 resources_used.cpupercent=0 resources_used.cput=00:00:00 resources_used.mem=944240kb resources_used.ncpus=24 resources_used.vmem=8547500kb resources_used.walltime=06:06:10 eligible_time=00:00:00 run_count=1
04/01/2022 03:52:06 E 3011.servername user=vorname.nachname group=users project=_pbs_project_default jobname=jobname_blabla queue=pt ctime=1648734942 qtime=1648734942 etime=1648777889 start=1648777896 exec_host=cn017/0*24 exec_vnode=(cn017:ncpus=24:mem=196608000kb) Resource_List.mem=192000mb Resource_List.mpiprocs=24 Resource_List.ncpus=24 Resource_List.nodect=1 Resource_List.place=free Resource_List.select=1:ncpus=24:mem=192000mb:mpiprocs=24 Resource_List.software=Software_Name Resource_List.Lizenzen_lic=23 Resource_List.walltime=720:00:00 session=122156 end=1648777926 Exit_status=0 resources_used.cpupercent=0 resources_used.cput=00:00:00 resources_used.mem=257460kb resources_used.ncpus=24 resources_used.vmem=7557688kb resources_used.walltime=00:00:18 eligible_time=00:00:00 run_count=1
Das Skript:
$LIST = Get-Content -Path C:\Temp\april.txt -Delimiter " " | Select-string -Pattern `
"04/[0-9][0-9]/2022", "[0-9][0-9]:[0-9][0-9]:[0-9][0-9]", "[0-9][0-9][0-9][0-9].servername",
"jobname=", "user=", "Resource_List.ncpus=", "Resource_List.nodect=", "Resource_List.software=",
"Exit_status=", "resources_used.mem=", "resources_used.vmem=", "Resource_List.*_lic",
"resources_used.walltime=", "eligible_time="
$LIST>C:\Temp\k.txt
Ausgabe:
04/01/2022
03:51:30
3008.servername
user=vorname.nachname
jobname=Jobname_blabla
Resource_List.ncpus=24
Resource_List.nodect=1
Resource_List.software=Software_Name
Resource_List.starhpcdomains_lic=23
Resource_List.walltime=720:00:00
Exit_status=0
resources_used.cput=00:00:00
resources_used.mem=944240kb
resources_used.vmem=8547500kb
resources_used.walltime=06:06:10
eligible_time=00:00:00
run_count=1
Danke schonmal!
Michael
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3020365342
Url: https://administrator.de/contentid/3020365342
Ausgedruckt am: 24.11.2024 um 19:11 Uhr
5 Kommentare
Neuester Kommentar
Hallöchen!
schau hier mal nach, dass du erst den "einfachen Export" auf deinem Monitor in eine Tabelle bekommst und anschließend dir das dann als csv ausdrucken kannst.
Ausgabe formatieren in PowerShell
schau hier mal nach, dass du erst den "einfachen Export" auf deinem Monitor in eine Tabelle bekommst und anschließend dir das dann als csv ausdrucken kannst.
Ausgabe formatieren in PowerShell
gerne doch. Es ist sinniger sich erst die Tabelle im PS ausgeben zu lassen, damit die Formatierungen ganz klar sind, wie du sie anwenden kannst und dann in csv zu exportieren.
PS ist ein sehr mächtiges Tool.
PS ist ein sehr mächtiges Tool.
Servus.
Eine mögliche Variante (Kommentare siehe Code):
Ergebnis CSV-Datei:
Grüße Uwe
Eine mögliche Variante (Kommentare siehe Code):
# input file
$file = 'C:\Temp\april.txt'
# output file
$csv = 'C:\temp\output.csv'
# columns to export
$columns = 'Date',
'Servername',
'user',
'jobname',
'Resource_List.ncpus',
'Resource_List.nodect',
'Resource_List.software',
'Resource_List.*_lic',
'Resource_List.walltime',
'Exit_status',
'resources_used.cput',
'resources_used.mem',
'resources_used.vmem',
'resources_used.walltime',
'eligible_time'
# for each line of content
$result = foreach($line in Get-Content $file) {
# split line by space
$cols = $line.split(" ")
# convert data to hashtable skipping first 4 columns with no column header assignment
$obj = $cols | select -skip 4 | out-string | ConvertFrom-StringData
# add missing servername and date columns to hashtable
$obj.Servername = $cols[3]
$obj.Date = $cols[0,1] -join ' '
# convert hashtable to custom object
[pscustomobject]$obj
}
# select desired columns and export objects as csv
$result | select $columns | export-csv $csv -Delimiter ";" -NoType -Encoding UTF8
Ergebnis CSV-Datei:
"Date";"Servername";"user";"jobname";"Resource_List.ncpus";"Resource_List.nodect";"Resource_List.software";"Resource_List.Lizenzen_lic";"Resource_List.walltime";"Exit_status";"resources_used.cput";"resources_used.mem";"resources_used.vmem";"resources_used.walltime";"eligible_time"
"04/01/2022 03:51:30";"3008.servername";"vorname.nachname";"jobname_blabla";"24";"1";"Software_Name";"23";"720:00:00";"0";"00:00:00";"944240kb";"8547500kb";"06:06:10";"00:00:00"
"04/01/2022 03:52:06";"3011.servername";"vorname.nachname";"jobname_blabla";"24";"1";"Software_Name";"23";"720:00:00";"0";"00:00:00";"257460kb";"7557688kb";"00:00:18";"00:00:00"