none
Erste Zeile von eíner .CSV löschen ohne die .csv zu vergößern. RRS feed

  • Frage

  • Hallöchen,

    ich mal wieder.
    Vieleicht eine sehr einfache Frage aber irgendwie komme ich nicht zum Ergebnis.

    Ich habe mehrere 880kb große .csv's nun würde ich gerne jeweils die erste Zeile löschen. Folgenden Code nehme ich dafür:

    $csv = Get-Content C:\Temp\Test.csv
    
    $csv = $csv[1..($csv.count - 1)]
    
    $csv > C:\Temp\Test.csv

    Das klappt auch alles supper doch wird aus den 880kb auf ein mal 1,7MB! :(
    Wo liegt der Grund dafür und wie kann ich dies ändern?

    VG

    Thomas


    • Bearbeitet Digiflex Donnerstag, 19. Juli 2012 07:14
    Donnerstag, 19. Juli 2012 07:13

Antworten

  • Was meinst du denn mit erste Zeile Löschen ?
    Normalerweise steht bei PowerShell in der ersten Zeile die Typ information !
    Dies bekommt man mit dem Parameter -NoTypeInformation weg!

    Danach gibt es noch eine "erste Zeile" die die Spalten überschriften enthält !
    Oder meinst du mit erster Zeile den ersten Daten eintrag ?

    Das die Datei doppelt so gross wird liegt daren das Export-CSV standardmässig ASCII als Zeichen Codierung benutzt.
    Bei ASCII wird pro Buchstabe ein Byte genutzt.
    Alle anderen PowerShell Funktionen beutzen Unicode als Zeichen Codierung. Dort werden pro Buchstabe 2 Byte genutz.
    Das verdoppelt die Datei!

    Du kannst bei der Ausgabe der Datei, mit dem Parameter –Encoding ASCII auswählen, dann bleibt die Datei so wie sie ist!

    Einfacher Geht es so:

    $CSV = Import-CSV 'c:\temp\test.csv'
    $CSV[1..($CSV.count - 1)] | Export-csv 'c:\temp\test-1.csv' -NoTypeInformation


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '


    • Bearbeitet Peter Kriegel Donnerstag, 19. Juli 2012 10:41
    • Als Antwort markiert Digiflex Donnerstag, 19. Juli 2012 11:31
    Donnerstag, 19. Juli 2012 10:40

Alle Antworten

  • Servus,

    ändere mal die letzte Zeile in:

    $csv | Export-Csv c:\Temp\Test.csv
    MfG
    Donnerstag, 19. Juli 2012 07:49
  • @Schlieng: Leider werden da aber nur die ersten 3 Spalten angezeigt :-/

    Gruß, Thomas

    Donnerstag, 19. Juli 2012 08:14
  • Was meinst du denn mit erste Zeile Löschen ?
    Normalerweise steht bei PowerShell in der ersten Zeile die Typ information !
    Dies bekommt man mit dem Parameter -NoTypeInformation weg!

    Danach gibt es noch eine "erste Zeile" die die Spalten überschriften enthält !
    Oder meinst du mit erster Zeile den ersten Daten eintrag ?

    Das die Datei doppelt so gross wird liegt daren das Export-CSV standardmässig ASCII als Zeichen Codierung benutzt.
    Bei ASCII wird pro Buchstabe ein Byte genutzt.
    Alle anderen PowerShell Funktionen beutzen Unicode als Zeichen Codierung. Dort werden pro Buchstabe 2 Byte genutz.
    Das verdoppelt die Datei!

    Du kannst bei der Ausgabe der Datei, mit dem Parameter –Encoding ASCII auswählen, dann bleibt die Datei so wie sie ist!

    Einfacher Geht es so:

    $CSV = Import-CSV 'c:\temp\test.csv'
    $CSV[1..($CSV.count - 1)] | Export-csv 'c:\temp\test-1.csv' -NoTypeInformation


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '


    • Bearbeitet Peter Kriegel Donnerstag, 19. Juli 2012 10:41
    • Als Antwort markiert Digiflex Donnerstag, 19. Juli 2012 11:31
    Donnerstag, 19. Juli 2012 10:40
  • Das ist es @ Peter hatte ich vorhin schon selber herrausgefunden! :) Vielen Dank!

    Gruß
    Thomas

    Donnerstag, 19. Juli 2012 11:31