|< 1 2 >| | 15 Einträge, 2 Seiten |
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
27
28
29
use Fcntl qw(SEEK_SET);
open my $fh, "+<", "fileblock" or die $!;
my @store = (0,0,0);
my $tell = 0;
while(<$fh>) {
if (m/^ttttt$/) {
# zur gemerkten position seek()en
seek $fh, $store[0], SEEK_SET;
# zu löschenden block einlesen
for (0..8) {
<$fh>;
}
# rest einlesen
my @rest = <$fh>;
# wieder zurückkehren
seek $fh, $store[0], SEEK_SET;
# alles ab hier abschneiden
truncate $fh, $store[0];
# und den rest schreiben
print $fh @rest;
}
else {
# queue, die sich die positionen der letzten drei zeilen merkt
shift @store;
push @store, $tell;
}
$tell = tell $fh;
}
close $fh;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl
use strict;
use warnings;
my @merk;
while (<>) {
if (/^t+$/) {
<>;
<>;
<>;
<>;
<>;
@merk = ();
}
else {
push @merk, $_;
}
if ($#merk >=3) {
print shift @merk;
}
}
print for @merk;
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
27
28
29
30
31
32
33
Microsoft Windows 2000 [Version 5.00.2195]
© Copyright 1985-2000 Microsoft Corp.
G:\privat\perl\forum>datei_zeilen_weg.pl testdatei.txt
blablabla
blublublu
ahahahah
kjkajnwbwhwd
qqwq
qerhetjz
zuuzu
ooop
G:\privat\perl\forum>cat testdatei.txt
blablabla
blublublu
ahahahah
kjkajnwbwhwd
ertfdjgetgwqte
gtorjhqwtrjhiwq
optjhtpjhptqwr
ttttttttttttttttt
trwhkrtohor
trhokworth
hrtwophrt
hgtorwph
lkjajklqw
qqwq
qerhetjz
zuuzu
ooop
G:\privat\perl\forum>
datei_zeilen_weg.pl testdatei.txt > testdatei_neu.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl
use strict;
use warnings;
my @merk;
while (<>) {
if (/^t+$/) {
<>; <>; <>; <>; <>;
@merk = ();
}
else {
push @merk, $_;
}
print shift @merk if $#merk >=3;
}
print for @merk;
|< 1 2 >| | 15 Einträge, 2 Seiten |