Script für Dateiausgabe
Helene
0 Struppi0 Helene
0 Michael Schröpl
Hallo Jungs (und Mädels ? ),
ich brauche ein Script das mit für jede Zeile einer Eingabedatei eine neue Datei, mit neuem Namen ausgibt.
Beispiel:
Datei: link.csv
Inhalt:
Zeile 1 " http://www.wurstbrot.de/ "
Zeile 2 " http://www.leberwurst.de/ "
soll ausgegeben werden als
neue1.html
Zeile 1 " http://www.wurstbrot.de/ "
und
neue2.html
Zeile 2 " http://www.leberwurst.de/ "
usw.
Ich habe mich schon mal an einem Script versucht, das gibt auch die Datei aus, nur leider weiß ich nicht wie ich immer nach jeder Zeile eine neue Datei mit anderm Namen erstelle.
#!/usr/local/bin/perl5
$LINK = "link.csv"; # Links
$NEUE = "neue.html"; # Sortierte Links
@Zeilen = ("");
open(LINK, "<$LINK") die "Datei "+$LINK+" konnte nicht geöffnet werden\n";
while(<LINK>)
{
push(@Zeilen, $_);
}
close(LINK);
@Zeilen = sort(@Zeilen);
open(NEUE, ">$NEUE") die "Datei "+$NEUE+" konnte nicht angelegt werden\n";
for(@Zeilen)
{
print NEUE $_;
}
close(NEUE);
Für eure Hilfe wäre ich sehr dankbar !
Liebe Grüße Helene
Servus
das ist etwas krud was du da machst.
in einer datei steht eine liste von links und für jede zeile soll eine neu datei mit jeweils einem link erstellt werden ?
Richtig ?
open(LINK, "<$LINK") die "Datei "+$LINK+" konnte nicht geöffnet werden\n";
open(LINK, "$LINK") die "Datei $LINK konnte nicht geöffnet werden\n";
@ZEILEN = <LINK>;
zum lesen braucht man kein < und innerhalb doppleter anführungszeichen werden skalare übersetzt.
<FILE> liest die ganze datei im arraykontext
Eigentlich wolltest du für jede zeile eine neue datei, oder ?
$name = 0; # Z.B.
for( sort @Zeilen)
{
open NEUE, ">neue$name.html" or die "kann neue$name.html nicht öffnen";
print NEUE $_;
close NEUE;
$name++;
}
Meinst du sowas ?
Struppi.
Das ist super !
Vielen Dank das funktioniert einwandfrei !
Grüße und Küsse
Helene
Hi,
nur leider weiß ich nicht wie ich immer nach jeder Zeile eine neue Datei mit anderm Namen erstelle.
Genauso, wie nur *eine* Datei - aber innerhalb der entsprechenden Schleife.
open(NEUE, ">$NEUE") die "Datei "+$NEUE+" konnte nicht angelegt werden\n";
for(@Zeilen)
{
print NEUE $_;
}
close(NEUE);
Wenn Du open() und close() in die Schleife hinein verschiebst und dabei jeweils den Wert für $NEUE passend berechnest, dann hast Du gewonnen.
Elegant wäre es, wenn Du mit
for my $diese_url (@Zeilen)
den jeweiligen Inhalt einer Eingabezeile einer lokalen Variablen zuweisen würdest, denn $_ geht Dir während der anderen Operationen innerhalb der Schleife kaputt.
mfG - Michael