Benutzer mit den meisten Antworten
Csv modifizieren

Frage
-
Aus einem Messgerät fließen eine bestimmte Anzahl von Daten durch Messungen. Wegen der ggf. Masse an Dateien, importieren wir aktuell die Dateien per Hand in Excel und ändern dann auch alles per Hand in Excel.
Um das zu automatisieren und viel schneller handeln zu können, würde ich gerne mit Powershell dieses umsetzen.
Ich habe also eine Textdatei, die von einem Instrument ausgegeben wird, um sie dann nach Wunsch in Excel zu öffnen.
Diese Datei sieht nach der Ausgabe durch das Instrument z.B. so aus:,,,,,,,,,,,,,,,,,,,, 21,, 22,, 40,, 57,, 59,, 80,, 102,, 158,, 210,, 220,, 311,, 312,, 313,, 413,, 418,, 435,, 452,, 510,, 570,, 588,, 661,, 678,, 684,, 686,, 690,, 691,, 698,, 701,, 708,, 712,, 714,, 731,, 734,, 750,, 767,, 781,, 798,, 989,, 990,, 991,, 992,, 993,, 994, ,,,,,,,,,,,,,,,,,,,,C,,C,,C,,C,,C,,C,,,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C,,C, ,,,,,,,,,,,,,,,,,,,,1,,1,,1,,1,,1,,1,,,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1,,1, R_Type1,R_Type2,S_Type,S_No.,R_No.,Pos,S_ID,M_Date,Age,Unit,Sex,S_Date,C1,C2,C3,C4,C5,Cup,Ope_D,N,U/L ,,U/L ,,mmol/L,,U/L ,,mmol/L,,U/L ,,ug/mL ,,U/L ,,mg/L ,,U/L ,,U/L ,,U/L ,,U/L ,,g/L ,,mmol/L,,mmol/L,,umol/L,,kU/L ,,U/L ,,U/L ,,umol/L,,g/L ,,U/L ,,U/L ,,umol/L,,mmol/L,,mmol/L,,mmol/L,,mg/L ,,umol/L,,mmol/L,,U/L ,,umol/L,,mAbs ,,mmol/L,,mmol/L,,mmol/L,,mmol/L,,mmol/L,,mmol/L,,,,,,, 1,1,1, 1, 1334,1,1 ,2014/07/30 13:41:00,,,,, , , , , ,1,, 8,,,,,,,,,,,,,,, 94,,,, 55,,,,,,,,,,,,,,,,,,,, 27.7,,,,,, 47,, 49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 8,, 6,, 2, 1,2,1, 1, 1334,1,1 ,2014/07/30 13:41:00,,,,, , , , , ,1,, 1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 29.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 1,1,1, 2, 1334,2, ,2014/07/30 13:41:00,,,,, , , , , ,1,, 8,,,,,,,,,,,,,,, 95,,,, 55,,,,,,,,,,,,,,,,,,,, 28.1,,,,,, 46,, 48,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 9,, 6,, 2, 1,1,1, 3, 1334,3, ,2014/07/30 13:41:00,,,,, , , , , ,1,, 8,,,,,,,,,,,,,,, 95,,,, 55,,,,,,,,,,,,,,,,,,,, 27.8,,,,,, 47,, 47,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 9,, 6,, 2, 1,1,1, 4, 1334,4, ,2014/07/30 13:41:00,,,,, , , , , ,1,, 8,,,,,,,,,,,,,,, 94,,,, 55,,,,,,,,,,,,,,,,,,,, 27.8,,,,,, 47,, 48,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 9,, 5,, 2, 1,1,1, 5, 1334,5, ,2014/07/30 13:41:00,,,,, , , , , ,1,, 8,,,,,,,,,,,,,,, 95,,,, 56,,,,,,,,,,,,,,,,,,,, 27.9,,,,,, 46,, 48,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 9,, 7,, 2, 1,1,1, 6, 1335,1,6 ,2014/07/30 11:09:00,,,,, , , , , ,1,, 15,,,,,,,,,,,,,,,,,,,,,,,,,,, 32.6,, 6.43,,,,,,,, 84,,,,,, 47.8,,,,,, 96,,,, 2.18,,,,,, 17.2,, 1.15,, 53.20,,,,,, 5.66,, 1.17,, 2.11,, 110,, 3.62,, 76.1,,,,,,, 1,1,1, 7, 1335,2, ,2014/07/30 11:09:00,,,,, , , , , ,1,, 15,,,,,,,,,,,,,,,,,,,,,,,,,,, 32.5,, 6.52,,,,,,,, 86,,,,,, 48.4,,,,,, 97,,,, 2.15,,,,,, 16.9,, 1.13,, 53.83,,,,,, 5.71,, 1.18,, 2.12,, 112,, 3.67,, 77.7,,,,,,, 1,1,1, 8, 1335,3, ,2014/07/30 11:09:00,,,,, , , , , ,1,, 15,,,,,,,,,,,,,,,,,,,,,,,,,,, 31.6,, 6.47,,,,,,,, 84,,,,,, 48.0,,,,,, 97,,,, 2.22,,,,,, 17.0,, 1.16,, 52.56,,,,,, 5.68,, 1.17,, 2.10,, 111,, 3.67,, 77.8,,,,,,, 1,1,1, 9, 1335,4, ,2014/07/30 11:09:00,,,,, , , , , ,1,, 15,,,,,,,,,,,,,,,,,,,,,,,,,,, 32.1,, 6.38,,,,,,,, 85,,,,,, 47.2,,,,,, 96,,,, 2.15,,,,,, 16.7,, 1.15,, 53.21,,,,,, 5.60,, 1.18,, 2.10,, 112,, 3.69,, 77.9,,,,,,, 1,1,1, 10, 1335,5, ,2014/07/30 11:09:00,,,,, , , , , ,1,, 15,,,,,,,,,,,,,,,,,,,,,,,,,,, 32.1,, 6.47,,,,,,,, 84,,,,,, 49.1,,,,,, 99,,,, 2.19,,,,,, 16.8,, 1.17,, 53.60,,,,,, 5.61,, 1.17,, 2.11,, 112,, 3.70,, 77.9,,,,,,,
Mein Problem ist nun aber folgendes.
Aus dieser Datei müssen vor dem Export nach Excel folgende Dinge verändert werden:
1) soll die 2. und 3. Zeile gelöscht werden
2) müssten die Zeichen wie R_Type1,R_Type2, ... und andere ebenso entfernt werden. Das Problem hierbei ist nun aber, dass auch die dann sich darunter befindlichen Werte mit gelöscht werden müssen, da sonst beim Öffnen in Excel die Spalten nicht mehr stimmen.
Also als Beispiel sollte nach dem Import aus der ersten Zeile z.B. die Zahl 158 mit dem Wert "u/L" aus der wegen Punkt 1) gelöschten Zeilen, dann Zeile 2 übereinanderstimmen, ebenso dann die entsprechenden Werte darunter, in dem Fall 94,95,95,95,94,95
3) dazu kommt, dass man sehen kann: es bestehen dort doppelte Kommas, die beim Import in Excel leere Spalten verursachen. Diese sollten ebenso vermieden werden.
Ich habe mal eine Datei soweit editiert, wie sie am Ende aussehen soll, damit man sie einfach in Excel importieren kann.;;;; 21; 22; 40; 57; 59; 80; 102; 158; 210; 220; 311; 312; 313; 413; 418; 435; 452; 510; 570; 588; 661; 678; 684; 686; 690; 691; 698; 701; 708; 712; 714; 731; 734; 750; 767; 781; 798; 989; 990; 991; 992; 993; 994; S_Type;S_No.;S_ID;M_Date;"U/L";"U/L";"mmol";"U/L";"mmol";"U/L";"ug/mL";"U/L";"mg/L";"U/L";"U/L";"U/L";"U/L";"g/L";"mmol/L";"mmol/L";"umol/L ";"kU/L";"U/L";"U/L";"umol/L";"g/L";"U/L";"U/L";"umol/L";"mmol/L";"mmol/L";"mmol/L";"mg/L ";"umol/L";"mmol/L";"U/L";"umol/L";"mAbs";"mmol/L";"mmol/L";"mmol/L";"mmol/L";"mmol/L";"mmol/L";;; 1;1;1;30/07/2014;;;;;;;;94;;55;;;;;;;;;; 27.7;;;47;49;;;;;;;;;;;;;;;;;8;6;2 1;1;1;30/07/2014;;;;;;;;;;;;;;;;;;;; 29.1;;;;;;;;;;;;;;;;;;;;;;; 1;2; ;30/07/2014;;;;;;;;95;;55;;;;;;;;;; 28.1;;;46;48;;;;;;;;;;;;;;;;;9;6;2 1;3; ;30/07/2014;;;;;;;;95;;55;;;;;;;;;; 27.8;;;47;47;;;;;;;;;;;;;;;;;9;6;2 1;4; ;30/07/2014;;;;;;;;94;;55;;;;;;;;;; 27.8;;;47;48;;;;;;;;;;;;;;;;;9;5;2 1;5; ;30/07/2014;;;;;;;;95;;56;;;;;;;;;; 27.9;;;46;48;;;;;;;;;;;;;;;;;9;7;2 1;6;6;30/07/2014;;;;;;;;;;;;;; 32.6; 6.43;;;;84;;; 47.8;;;96;; 2.18;;; 17.2; 1.15; 53.20;;; 5.66; 1.17; 2.11;110; 3.62; 76.1;;; 1;7; ;30/07/2014;;;;;;;;;;;;;; 32.5; 6.52;;;;86;;; 48.4;;;97;; 2.15;;; 16.9; 1.13; 53.83;;; 5.71; 1.18; 2.12;112; 3.67; 77.7;;; 1;8; ;30/07/2014;;;;;;;;;;;;;; 31.6; 6.47;;;;84;;; 48.0;;;97;; 2.22;;; 17.0; 1.16; 52.56;;; 5.68; 1.17; 2.10;111; 3.67; 77.8;;; 1;9; ;30/07/2014;;;;;;;;;;;;;; 32.1; 6.38;;;;85;;; 47.2;;;96;; 2.15;;; 16.7; 1.15; 53.21;;; 5.60; 1.18; 2.10;112; 3.69; 77.9;;; 1;10; ;30/07/2014;;;;;;;;;;;;;; 32.1; 6.47;;;;84;;; 49.1;;;99;; 2.19;;; 16.8; 1.17; 53.60;;; 5.61; 1.17; 2.11;112; 3.70; 77.9;;;
Ich habe zwar verschiedene Ansätze (get-content...) usw., aber leider bin ich in Powershell nicht so professionell drauf wie die meisten hier, um dieses zu einem Wunschergebis umsetzen zu können.Kann mir hier jemand helfen ?.
- Bearbeitet agenosko Donnerstag, 7. August 2014 12:03 eine Zeile vergessen
- Bearbeitet Denniver ReiningMVP, Moderator Donnerstag, 7. August 2014 16:36 Geändert da Frage nicht mit Regex zu tun hat.
Antworten
-
Lies mal bitte diesen Post hier durch und verinnerliche Punkt 1. :)
Du musst dein komplexes Problem in leichter lösbare Einzelschritte runterbrechen und für diese dann nach Lösungen suchen.
Also:
Prob 1: Löschen von einzelnen Zeilen in Textdatei
Prob 2: Importieren einer Datei als CSV
Prob 3: Löschen einzelner Spalten in einer CSV
So arbeitest du dich Schritt für Schritt vor und lernst dabei ne Menge für zukünftige Aufgaben.
Grüße, Denniver
Blog: http://bytecookie.wordpress.com
!NEU! Powershell Codesnippet Manager 3: Link
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort.- Als Antwort markiert agenosko Freitag, 8. August 2014 17:36
Alle Antworten
-
Lies mal bitte diesen Post hier durch und verinnerliche Punkt 1. :)
Du musst dein komplexes Problem in leichter lösbare Einzelschritte runterbrechen und für diese dann nach Lösungen suchen.
Also:
Prob 1: Löschen von einzelnen Zeilen in Textdatei
Prob 2: Importieren einer Datei als CSV
Prob 3: Löschen einzelner Spalten in einer CSV
So arbeitest du dich Schritt für Schritt vor und lernst dabei ne Menge für zukünftige Aufgaben.
Grüße, Denniver
Blog: http://bytecookie.wordpress.com
!NEU! Powershell Codesnippet Manager 3: Link
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort.- Als Antwort markiert agenosko Freitag, 8. August 2014 17:36
-
Danke Denniver.
Nur leider kann ich von den Tips ggf. nur den Link mit dem Löschen einzelner Zeilen aus einer Textdatei gebrauchen. Zu den Links 2 und 3 brauche ich keine Hilfe.
Das Problem ist ja aktuell vielmehr, dass wir die Textdatei VORHER editieren müssen, bevor daraus ein xlsx oder csv erstellt wird.
Aktuell habe ich es ja am Laufen, dass ich die Datei importiere, mit Powershell Excel dazu beauftrage alle möglichen Umformatierungen zu machen und das Resultat zu speichern. Das läuft ohne Probleme. Jedoch wird leider verlangt, dass alle Änderungen und Formatierungen vor dem Import stattzufinden haben, erst dann darf importiert werden. Und genau hierbei fehlt mir das Wissen (von der Tiefe), wie ich all diese Formatierungen der Textdatei so vornehme, dass anschließend ein Export nach Excel, per csv usw. ohne weitere Arbeit erfolgt.
Hier liegt mein Problem.
-
Die Datei ist bereits eine csv. Eine csv ist nichts anderes als eine Textdatei, die von einem Trennzeichen (hier Komma) getrennte Werte enthält. Das ist exakt was du vorliegen hast. Das Cmdlet Import-csv ermöglicht dir nur die Spalten innerhalb der Datei als solche zu behandeln. Du kannst die Datei danach in einem beliebigen Format wieder abspeichern. Nochmal: du hast bereits eine Csv, Das diese vielleicht eine andere Dateiendung wie dat,txt oder log hat, ändert daran nichts. Grüsse, Denniver
Blog: http://bytecookie.wordpress.com
!NEU! Powershell Codesnippet Manager 3: Link
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort. -
Hallo,
meintest du es so?
$Import = "C:\Test\Import.txt" $Export = "C:\Test\Export.txt" $Header = "Weg1","Weg2","S_Type","S_No.","R_No.","Pos","S_ID","M_Date","Age","Unit","Sex","S_Date","C1","C2","C3","C4","C5","Cup","Ope_D","N","U/L" Import-Csv -Path $Import -Delimiter ',' -Header $Header|Select-Object -Skip 1 | Select-Object -Skip 1|Select-Object -Skip 1|Select-Object -Skip 1|Select-Object -Property * -ExcludeProperty Weg1,Weg2|Out-File -FilePath $Export
Gruß Toni