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

Zeichen aus einer grossen Datei loeschen



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
SimplyFred
 2007-03-26 16:43
#75406 #75406
User since
2006-12-16
25 Artikel
BenutzerIn
[default_avatar]
Hallo,
ich habe eine grosse Datei, in der das Zeichen "." (Punkt) darin vorkommt. In der nachfolgende Prozedur kann genau dieses Zeichen aber nicht verarbeitet werden.
Wie kann ich es - recht einfach gestaltet - einfach das Zeichen aus der Datei rausschmeissen ???
pq
 2007-03-26 16:58
#75407 #75407
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Code: (dl )
perl -pi -e's/\.//g' datei
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
SimplyFred
 2007-03-26 17:08
#75408 #75408
User since
2006-12-16
25 Artikel
BenutzerIn
[default_avatar]
Wahnsinn, wie schnell die Antwort kam ...
Genial - DANKE !

Kann ich es in ein einfaches Script einfach einbauen, was gleichzeitig eine neue Datei erzeugt?
Das soll dann per Cronjob nachts gestartet werden !
betterworld
 2007-03-26 17:26
#75409 #75409
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Moechtest Du jetzt eine neue (also eine zweite) Datei erzeugt haben, oder soll es in der ersten ersetzt werden und auch wieder in der ersten gespeichert werden? Letzteres tut der Einzeiler von pq. Wenn Du es in eine andere Datei haben willst:
Code: (dl )
perl -pe 's/\.//g' datei > datei2
betterworld
 2007-03-26 17:29
#75410 #75410
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
[quote=betterworld,26.03.2007, 15:26]
Code: (dl )
perl -pe 's/\.//g' datei > datei2
[/quote]
Wobei man eigentlich sicherer das hier schreiben sollte:
Code: (dl )
perl -pe 's/\.//g END {close STDOUT or die $!}' datei > datei2


perl -p schließt STDOUT naemlich von sich aus nicht, und kann daher in Einzelfaellen uebersehen, dass das Dateisystem voll ist (insbesondere auf NFS oder in Verbindung mit Quotas koennte es zu Problemen kommen, steht jedenfalls in close(2)).\n\n

<!--EDIT|betterworld|1174916132-->
SimplyFred
 2007-03-27 09:38
#75411 #75411
User since
2006-12-16
25 Artikel
BenutzerIn
[default_avatar]
Danke für die schnelle Hilfe.
Mit
perl -pe 's/\.//g' datei > datei2
wird zwar die neue datei2 erzeugt, die ist aber leer und die Änderungen werden nach wie vor in "datei" durchgeführt




Kann ich anstatt den . (Punkt) einfach zu löschen, auch ersetzen ?
Z.B.
Einfach, da wo ein Punkt drinne ist durch ein ; (Semikolon) ersetzen ?\n\n

<!--EDIT|SimplyFred|1174974520-->
renee
 2007-03-27 10:10
#75412 #75412
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Klar, da ist ja der ganz normale s///-Operator drin...

Code: (dl )
perl -pi -e's/\./;/g' datei
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/
pq
 2007-03-27 11:55
#75413 #75413
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=SimplyFred,27.03.2007, 07:38]Danke für die schnelle Hilfe.
Mit
perl -pe 's/\.//g' datei > datei2
wird zwar die neue datei2 erzeugt, die ist aber leer und die Änderungen werden nach wie vor in "datei" durchgeführt[/quote]
na sowas, dann hat dein perl einen bug. oder kann es nicht vielleicht
sein, dass du -pi statt -p geschrieben hast? -pi macht inplace-
ersetzung, -p nicht.
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
SimplyFred
 2007-03-27 12:20
#75414 #75414
User since
2006-12-16
25 Artikel
BenutzerIn
[default_avatar]
Ja klar ...

Aber ich kann nun leider nichts mit dem Resultat anfangen.

Es muss so laufen, dass die Zeilen, in denen ein . (Punkt) gefunden wird, einfach gelöscht werden ...

Naechstes Problem ? ...
renee
 2007-03-27 12:46
#75415 #75415
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
perl -ne 'print unless /\./' datei > datei2
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/
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2007-03-26 16:43.