Thread pattern matching: Loeschen eines  Textblocks aus einer Dat (14 answers)
Opened by mkuehnl at 2004-08-17 11:55

Crian
 2004-08-17 16:59
#49336 #49336
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Genau, meins ist (oder soll sein) ein Filter. Ich teste es mal gerade...

... klappt auf Anhieb :)

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
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>


Die Zeile if (/^t+$/) { musst Du natürlich auf Deine Methode zur Erkennung der besonderen Zeile anpassen.

Mit

Code: (dl )
datei_zeilen_weg.pl testdatei.txt > testdatei_neu.txt


erhälst Du dann eine Datei ohne die entsprechenden Zeilen.

Pathologische Fälle sind noch nicht mit bedacht (es folgen keine füng Zeilen mehr in der Datei), könnten aber trotzdem gut gehen.

Der selbe Code wie oben nochmal optisch etwas kürzer:

Code: (dl )
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;
\n\n

<!--EDIT|Crian|1092748409-->
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

View full thread pattern matching: Loeschen eines  Textblocks aus einer Dat