User since
2007-03-29
4
Artikel
BenutzerIn
Hallo Leute,
Habe ein text file, wo folgende Zeilen vorkommen
text;txt ;text ;16 ;32 ;23 ;text # zeile soll bleiben
text;txt;;;;; #zeile soll gelöscht werden
Danke
User since
2003-08-04
14371
Artikel
ModeratorIn
Die Überschrift passt nicht so ganz zu der Frage, oder? Willst Du Zeilen mit Leerzeichen gelöscht werden, oder Zeilen (anscheinend einer CSV-Datei), die leere "Felder" hat - also 2 oder mehrere ";" direkt hintereinander stehen?
User since
2007-03-29
4
Artikel
BenutzerIn
Sorry, recht erkannt es ist eine .csv Also die komplette Zeile aus dem file, soll gelöscht werden.
User since
2003-08-04
2036
Artikel
BenutzerIn
... ich denke du suchst so etwas:
#!/usr/bin/perl
use warnings;
use strict;
my $zeile = "text;txt ;text ;16 ;32 ;23 ;text ";
my @aiZeile = split(/;/, $zeile);
foreach (@aiZeile) {
s%^\s+%%g;
s%\s+$%%g;
} # foreach
print join(";", @aiZeile);
Gruss,
havi
User since
2007-03-29
4
Artikel
BenutzerIn
Genau, wow es ging schell.Danke schön!
User since
2003-08-04
14371
Artikel
ModeratorIn
Die Lösung passt aber nicht so wirklich zur Aufgabe *grübel*
Im Ursprungspost stand was von "Zeile löschen"...
User since
2003-08-04
2036
Artikel
BenutzerIn
[quote=renee,29.03.2007, 12:17]Die Lösung passt aber nicht so wirklich zur Aufgabe *grübel*
Im Ursprungspost stand was von "Zeile löschen"...[/quote]
Laut Antwort sollte es aber passen!
... dachte mir schon das er sicher keine Zeilen loeschen will.
Gruss
User since
2007-03-29
4
Artikel
BenutzerIn
Nachdem ich es ausprobiert habe tut es ja doch nicht ganz genau was ich brauche.
Lösung von havi zerlegt die Zeile in area und druckt die volle einzelne felder mit ";" dazwieschen. Ich brauche aber keinen text, wenn es dahinter nichts steht. Aber die idee hat mir gefahlen.
Mit code in Perl bin ich nicht besonders gut vertraut.
Ich selbst dachte an folgende Lösung:
Es soll möglich sein: die datei line by line einzulesen und der wert (länge des string) mit grenzwert vergleichen und dann nur die zeilen drucken die etwas beinhalten. Und die datei wieder schlißen. Mit Perl soll es Kinderspiel sein.Oder? Es ist nur die Frage wie?
User since
2003-08-04
14371
Artikel
ModeratorIn
Zeige am besten mal ein paar Beispielzeilen und schreibe dazu was am Ende rauskommen soll (mit Begründung).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use Tie::File;
my $file = '/path/to/file';
tie my @lines,'Tie::File',$file or die $!;
@lines = grep{ is_wanted($_) }@lines;
untie @lines;
sub is_wanted{
my ($line) = @_;
my $return = 0;
if($bedingung_dass_Zeile_erhalten_bleiben_soll){
$return = 1;
}
return $return;
}