Thread txt-datei filtern
(17 answers)
Opened by Xylol at 2009-12-03 10:59
"perl" also der Aufruf des Interpreters/VM hat ein paat spezielle Kommandoswitche z.B. "-n" oder "-p". Diese Schalter führen dazu das jedes Argument als Dateinamen angesehen wird, diese geöffnet werden und zeilenweise durchlaufen werden. Man muss dann nur noch übergeben was man mit dieser Zeile machen möchte.
Damit eignet sich "perl" auch gut als ersatz für "awk", "sed" oder "grep" in Shell-Skripten. Letztendlich könnte man den Einzeiler sogar noch weiter reduzieren auf: Code: (dl
)
perl -wne 'print if m/\A.{11,14}$/' datei.txt EDIT: Mit "grep" auf der Shell: Code: (dl
)
grep -E '^.{11,14}$' datei.txt Ich bevorzuge aber Perl da ich die Regex Features genau kenne und weiß was es macht. Bei "grep" und Konsorten hatte ich schonmal Regexe die nicht matchten warum auch immer. Diese simple Regex bei "grep" geht auch ohne "-E" bei mir nicht, obwohl das wirklich noch eine "Simple" Regex ist die nicht wirklich spezialitäten nutzt. Ich denke gerade für anfänger die mit Regexen nicht so vertraut sind dürfte das eine ziemliche Qual sein wenn die Regexe je nach Schalter etc. eine andere Bedeutung bekommen. Auch ein Grund warum ich niemanden wirklich das "Shell-Skripting" empfehlen würde. EDIT2: Und noch nebenbei erwähnt. Das ganze prüft eher auf die "Byte" länge der Zeilen nicht die zeichenlänge. Hast du eine UTF-8 Kodierte datei und die Namen umlaute würde etwas falsches dabei heraus kommen. Da würde ich dir dann meine längere Version empfehlen. Obwohl UTF-8 behandlung wohl auch korrekt mit "-CSD" als Kommandooption funktionieren sollte. (Nicht getestet). Last edited: 2009-12-03 12:37:19 +0100 (CET) Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
|