2017-07-17 1 views
-3

Ich habe das folgende Format für meine CSV-Datei, die ich online heruntergeladen und muss es analysieren. Ich möchte in der Lage sein, die Spalte "Einheit" loszuwerden. Wie kann ich das tun? Ich möchte in der Lage sein, dies zu tun, während ich die Datei analysiere und sie nicht in eine andere Datei kopiere, weil die Datei sehr groß ist. Vielen Dank!löschen Spalte in CSV in Perl

<radio>,<mcc>,<net>,<area>,<cell>,<unit>,<lon>,<lat>,<range>,<samples>,<changeable>,<created>,<updated>,<averageSignal> 
UMTS,262,2,801,86355,,13.28527,52.521711,37,7,1,1282569574,1300175362,-91GSM,262,2,801,1795,,13.276605,52.525348,5714,9,1,1282569574,1300175362,-87 
+4

Sie haben nichts versucht – ssr1012

+2

"* Kopieren Sie es nicht in eine andere Datei, weil die Datei sehr groß ist *" Wenn Sie genügend Speicher haben, können Sie den Inhalt im Speicher behalten. Aber, sonst, lesen Sie die Datei Zeile für Zeile, entfernen Sie das Feld aus jeder Zeile, schreiben Sie in neue Datei, wenn erfolgreich abgeschlossen, benennen Sie die neue Datei auf die ursprüngliche Datei. –

+0

https://metacpan.org/pod/Text::CSV würde es Ihnen erlauben, die Datei einzulesen, alle Spalten zu speichern, außer der, die Sie nicht brauchen, und sie wieder herauszuschreiben. Versuchen Sie etwas und aktualisieren Sie Ihre Frage, wenn Sie nicht weiterkommen. –

Antwort

-1
#!/usr/bin/env perl 

use strict; 
use warnings; 

my $col_to_delete = '<unit>'; 

chomp (my @header = split /,/, <>); 
my @newheader = grep { not $_ eq $col_to_delete } @header; 

print join (",", @newheader),"\n"; 

while (<>) { 
    chomp; 
    my %row; 
    @row{@header} = split /,/; 
    print join (",", @row{@newheader}),"\n"; 

} 

Liest STDIN Zeile für Zeile, und druckt, wie Sie gehen, so dass Sie nicht viel Speicher benötigen.

Sie können es wahrscheinlich über die direkte Bearbeitung durchführen, aber Sie sollten es testen, um sicherzustellen, dass es zuerst zufriedenstellend funktioniert. Sie würden dies tun, indem Sie $^I einstellen, aber wirklich, Sie sind besser dran, zwei Dateien zu erstellen, weil es schockierend einfach ist, einen versehentlich zu überlisten.