Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12499[/thread]

Zeilennummern einfügen

Leser: 1


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
Gabriel
 2008-09-15 19:09
#114673 #114673
User since
2008-09-15
12 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen!!

Bin ziemlich neu auf dem "PERL-Gebiet" und wollte fragen wie man in eine Datei die Zeilennummern einfügen kann?!?! Die Datei auszulesen geht ohne Probleme (sprich die Anzahl der Zeilen). Wie kann ich denn die Nummern jetzt einfügen??

Vielen Dank
MfG
Gabriel!!
bytebrain
 2008-09-15 19:17
#114674 #114674
User since
2008-07-21
20 Artikel
BenutzerIn
[default_avatar]
Was genau möchtest du tun?

Mach aus:
Zeile eins
Zeile zwei
Zeile drei

1. Zeile eins
2. Zeile zwei
3. Zeile drei

Meinst du sowas? Wenn ja:
lies die Datei ein ein Array. Danach schreibe den Inhalt des Arrays in einer Schleife zeilenweise in eine neue Datei. Hier kannst du dann die Zeilennummern hinzufügen.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
my $fh = open(FH, "/pfad/zur/datei.txt");
my $out = open(OUT, ">/pfad/zur/neuen_datei.txt");

my @lines = <FH>;
my $i = 0;
foreach(@lines) {
    print OUT "$i. $_\n";
    $i++;
}


In deiner neuen Datei hast du dann die Zeilen mit Zeilen-Nummer.

Gruß,
bytebrain
pq
 2008-09-15 19:20
#114675 #114675
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
das geht mit einem einzeiler:
Code: (dl )
perl -pi.bak -e' $_ = "$.: $_" ' datei


ansonsten wirds ein bisschen komplizierter, du musst die datei entweder:
- zum lesen und schreiben gleichzeitig öffnen (http://p3rl.org/open, http://p3rl.org/perlopentut)
- einmal zeilen einlesen und zum start zurückspringen (http://p3rl.org/seek)
- datei leeren (http://p3rl.org/truncate
- und die zeilen mit der nummer wieder reinschreiben

oder:
die datei lesen und gleichzeitig mit der zeilennummer in eine andere datei schreiben und zum
schluss die neue datei umbenennen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
bytebrain
 2008-09-15 19:24
#114676 #114676
User since
2008-07-21
20 Artikel
BenutzerIn
[default_avatar]
pq+2008-09-15 17:20:42--
[...]
oder:
die datei lesen und gleichzeitig mit der zeilennummer in eine andere datei schreiben und zum
schluss die neue datei umbenennen.


Ich habe Gabriel diesen Lösungsansatz unterbreitet, da er sich ja als Perl-Neuling beschrieben hat und ich dachte, das meine Lösung erstmal ausreicht, auch zum lernen eben ;-)


Gruß,
bytebrain
nepos
 2008-09-15 19:26
#114677 #114677
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wenn du unter Linux/Unix unterwegs bist, da gibts auch ein Commandline-Tool: nl
Gabriel
 2008-09-15 19:44
#114678 #114678
User since
2008-09-15
12 Artikel
BenutzerIn
[default_avatar]
Super Leute...einfach Klasse wie hier geholfen wird!!!


THANKS
Gabriel
 2008-09-15 19:58
#114679 #114679
User since
2008-09-15
12 Artikel
BenutzerIn
[default_avatar]
Ähhhhm, besteht die Möglichkeit die alte Datei durch die neue (mit Zeilennummern) zu ersetzen, damit diese Datei weiterhin im Programm benutzt werden kann??

Denn wenn ich
Code (perl): (dl )
1
2
    my $readfile= open(READ, $file);
    my $writefile = open(WRITE, ">$file");

nehme, ist die Datei leer!?!?!

MfG
Gabriel
pq
 2008-09-15 20:03
#114680 #114680
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
aber das habe ich doch beschrieben. einfach nach dem erstellen der datei umbenennen.
mit http://p3rl.org/rename oder CPAN:File::Copy
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Gabriel
 2008-09-15 20:29
#114681 #114681
User since
2008-09-15
12 Artikel
BenutzerIn
[default_avatar]
pq danke für die Antwort, das habe ich auch versucht!!!
Code (perl): (dl )
1
2
3
4
my $readfile= open(READ, "<$file");
my $writefile = open(WRITE, ">test.pl");

rename($writefile, $file);


Also ich möchte der neuen Datei (test.pl) die Bezeichnung der alten Datei($file) übergeben.....irgendwie will er das nicht :-(((
Gabriel
 2008-09-15 20:38
#114682 #114682
User since
2008-09-15
12 Artikel
BenutzerIn
[default_avatar]
Ich habs...danke!!
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2008-09-15 19:09.