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

bestimmte zeilen löschen: .. in einer datei

Leser: 5


<< >> 10 Einträge, 1 Seite
deepblack
 2004-12-19 19:08
#50120 #50120
User since
2004-06-15
46 Artikel
BenutzerIn
[default_avatar]
moin leute,
ich steh gerademal aufm schlauch...

der benutzer kann auswählen welche zeile er in der datei löschen will, soweit so gut, er gibt die zeilen nummer ein.. nur wie stell ich es an das
ich die zeile dann lösche? ich hab bis jetzt irgendwie keine funktion dazu gefunden, steht das evtl. in programming perl und ich habs nicht gesehen? wär super wenn ihr mir da mal auf die sprünge helfen könntet ;)

mfg deepblack
We have joy, we have fun, we have a root shell on a SUN!
renee
 2004-12-19 19:42
#50121 #50121
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
z.B.:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#! /usr/bin/perl

use strict;
use warnings;
use Tie::File;

my $zeilennummer = 13; # Beispiel: 13. Zeile soll gelöscht werden
my $file = '/zu/bearbeitende/Datei.txt';

tie my @array,'Tie::File',$file or die $!;
$array[$zeilennummer - 1] = '';
untie @array;
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/
deepblack
 2004-12-19 19:57
#50122 #50122
User since
2004-06-15
46 Artikel
BenutzerIn
[default_avatar]
ok das ist ja fast perfekt :) danke soweit :)
leider hinterläst er in der datei ne leerzeile, das mag der rest von meinem script net so gerne ;) aber das ist das geringste problem.. da kümmer ich mich dann morgen mal drum

schönen abend wünscht deepblack
We have joy, we have fun, we have a root shell on a SUN!
esskar
 2004-12-19 20:08
#50123 #50123
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ersetz mal

Code: (dl )
$array[$zeilennummer - 1] = '';


durch

Code: (dl )
splice @array, $zeilennummer - 1, 1;
deepblack
 2004-12-19 20:29
#50124 #50124
User since
2004-06-15
46 Artikel
BenutzerIn
[default_avatar]
ahh super *verbeug*
geht perfekt.. danke :)
We have joy, we have fun, we have a root shell on a SUN!
esskar
 2004-12-19 20:35
#50125 #50125
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
das ganze ist sehr zeit aufwendig; also aufpassen wie du es verwendest!
deepblack
 2004-12-19 20:38
#50126 #50126
User since
2004-06-15
46 Artikel
BenutzerIn
[default_avatar]
das ganze brauch ich nur manchmal um alte daten aus ner datei zu löschen, auch immer nur mal eine zeile.. da wird es wohl net so schlimm sein :) und die datei ist auch recht klein, stehen hächstens 10 zeilen drin.. aber danke für den hinweis
We have joy, we have fun, we have a root shell on a SUN!
Crian
 2004-12-20 11:04
#50127 #50127
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Falls Du doch mal mehrere Zeilen löschen willst, lösch sie von hinten nach vorn, dann musst Du die Indizes nicht umrechnen.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Relais
 2004-12-20 11:18
#50128 #50128
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Crian,20.12.2004, 10:04]Falls Du doch mal mehrere Zeilen löschen willst, lösch sie von hinten nach vorn, dann musst Du die Indizes nicht umrechnen.[/quote]
In @Crians Sinne, "lösch sie gar nicht", laß das gleich den Index tun:
Code: (dl )
1
2
3
4
5
6
7
my @zahlen = ( 0 .. 9  );

print @zahlen, "\n"; # 0123456789

$#zahlen = 3; # Letztes Element sei nun das 4. (Arrays fangen bei 0 an...)

print @zahlen, "\n"; # 0123
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
Crian
 2004-12-20 15:28
#50129 #50129
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Das geht aber nicht, falls Du aus einer 1000-zeiligen Datei die Zeilen 17, 42, 313 und 666 löschen willst ;)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< >> 10 Einträge, 1 Seite



View all threads created 2004-12-19 19:08.