Schrift
[thread]3048[/thread]

Spalten löschen: Von 14 Spalten werden nur 6 benötigt.



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
Steff64
 2007-01-15 14:29
#28860 #28860
User since
2007-01-13
10 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

zu meinem Beitrag "Word-Dokument umformatieren" von vor zwei Tagen habe ich hier schon die passende Lösung gefunden.

Bei der zu importierenden Datei habe ich nun festgestellt, dass ich von den 14 Feldern (Spalten) nur die ersten sechs benötige.

Es wäre super, wenn man die überflüssigen Spalten beim Austausch der Kommata gleich mit löschen könnte.

Wie muss das Perl-Script dazu geändert werden?

Vielen Dank für Hinweise.

Gruß,

Stefan
renee
 2007-01-15 14:39
#28861 #28861
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Da sieht es etwas anders aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl

use strict;
use warnings;

my $infile = '/path/to/source.txt';
my $outfile = '/other/path/to/outfile.txt';

# welche Spalten sind gewünscht? (Hier: die 2., 5., 8., 9., 10.)
# Achtung: Es ist jeweils der Index - beginnt also bei 0 (wie bei Arrays)
my @wanted = qw(1 4 7 8 9);

open my $in,'<',$infile or die $!;
open my $out,'>',$outfile or die $!;
while(my $line = <$in>){
chomp $line;
my @cols = split /,/$line;
print $out join("\t",@cols[@wanted]),"\n";
}
close $out;
close $in;



Edit: Fehler im Skript beseitigt...\n\n

<!--EDIT|renee|1168864814-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Steff64
 2007-01-15 15:01
#28862 #28862
User since
2007-01-13
10 Artikel
BenutzerIn
[default_avatar]
[quote=renee,15.01.2007, 13:39][/quote]
Hallo renee,

> # welche Spalten sind gewünscht?
Bei mir die ersten acht, also:
my @wanted = qw(0 1 2 3 4 5 6 7);

Wenn ich das Script laufen lasse (Doppelklick), dann erscheint kurz ein Fenster. Die Datei
my $outfile = '/other/path/to/outfile.txt';
(im gleichen Verzeichnis wie das $infile und das Script) wird jedoch nicht geschrieben.

Kannst Du Dir das bitte nochmals ansehen?

Vielen Dank für Deine Mühen.

Gruß,

Stefan
GwenDragon
 2007-01-15 15:07
#28863 #28863
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Ich heiße nicht renee, aber antworte mal trotzdem ;)

[quote=Steff64,15.01.2007, 14:01]Wenn ich das Script laufen lasse (Doppelklick), dann erscheint kurz ein Fenster. Die Datei
my $outfile = '/other/path/to/outfile.txt';
(im gleichen Verzeichnis wie das $infile und das Script) wird jedoch nicht geschrieben.[/quote]
Bitte das Skript in der Kommandozeile laufen lassen (DOS-Fenster), nicht per Doppelklick.

Bei /other/path/to/ muss du deinen Pfad auf die Datei einsetzen (ich tippe bei dir mal auf irgendein Windows),
beispielweise:
C:/Meine Dateien/Testdaten/outtext.txt
wenn dort die Eingabedatei liegt.

Genauso den richtigen Pfad bei /path/to/source.txt\n\n

<!--EDIT|GwenDragon|1168866533-->
Steff64
 2007-01-15 15:17
#28864 #28864
User since
2007-01-13
10 Artikel
BenutzerIn
[default_avatar]
Hallo GwenDragon,

dann bekomme ich folgende Meldung:

Scalar found where operator expected at
d:\folder\file.pl
lin 22, near "/,/$line"
(Missing operator before $line?)


Global symbol "$infile" requires explicit package name at
d:\folder\file.pl lin 18

Global symbol "$outfile" requires explicit package name at
d:\folder\file.pl lin 19

syntax error at
d:\folder\file.pl lin 22 near "/,/$line"
Execution of
d:\folder\file.pl
aborted due to compilation errors

Stefan
renee
 2007-01-15 15:18
#28865 #28865
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
my @cols = split /,/$line;
muss eigentlich so heißen:
Code: (dl )
my @cols = split /,/,$line;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Steff64
 2007-01-15 15:52
#28866 #28866
User since
2007-01-13
10 Artikel
BenutzerIn
[default_avatar]
Hallo renee,

nun nur noch diese Fehlermeldungen:
Global symbol "$infile" requires explicit package name at D:\folder\file.pl line 18.
Global symbol "$outfile" requires explicit package name at
D:\folder\file.pl line 19.
Execution of D:\folder\file.pl aborted due to compilation errors.

Stefan
renee
 2007-01-15 15:56
#28867 #28867
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Da musst Du einen Fehler beim Abtippen gemacht haben, der Code hat keine Syntaxfehler (wenn man den Fehler beim split ausgebessert hat)...

Zeig mal den Code, den Du jetzt verwendest (bitte Copy&Paste)...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Steff64
 2007-01-15 16:06
#28868 #28868
User since
2007-01-13
10 Artikel
BenutzerIn
[default_avatar]
Hallo,

habe den Code per Copy/Paste aus dem Forum verwendet:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/perl

use strict;
use warnings;

# my $infile = '/path/to/source.txt';
# my $outfile = '/other/path/to/outfile.txt';

my $in_file = 'D:\folder\in.txt';
my $out_file= 'D:\folder\out.txt';

# welche Spalten sind gewünscht? (Hier: die 2., 5., 8., 9., 10.)
# Achtung: Es ist jeweils der Index - beginnt also bei 0 (wie bei Arrays)

# my @wanted = qw(1 4 7 8 9);
my @wanted = qw(0 1 2 3 4 5 6 7);

open my $in,'<',$infile or die $!;
open my $out,'>',$outfile or die $!;
while(my $line = <$in>){
chomp $line;
my @cols = split /,/,$line;
print $out join("\t",@cols[@wanted]),"\n";
}
close $out;
close $in;

Soweit der Code.

Stefan\n\n

<!--EDIT|renee|1168870348-->
renee
 2007-01-15 16:12
#28869 #28869
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dann schau Dir den Teil nochmal genau an:
Code: (dl )
1
2
3
4
5
# my $infile = '/path/to/source.txt';
# my $outfile = '/other/path/to/outfile.txt';

my $in_file = 'D:\folder\in.txt';
my $out_file= 'D:\folder\out.txt';
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2007-01-15 14:29.