Re: regexp frage
Roland M. Kruggel <[EMAIL PROTECTED]> wrote: > \s*[(=,\t ]_[a-zA-Z0-9_]* > genommen. Es funktioniert so halbwegs, ausser das (=, nicht gefunden Wie soll das auch gefunden werden? Du matchest ja auf alles, was nach beliebig vielen spaces mit '(', '=', ',', oder ' ' beginnt und dem dann beliebig viele Buchstaben, Ziffern und Underscores folgen. Wo findest Du da einen Match auf '(='? regards Mario -- I heard, if you play a NT-CD backwards, you get satanic messages... That's nothing. If you play it forwards, it installs NT. -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: regexp frage
On Wednesday 11 October 2006 12:29, Roland M. Kruggel wrote: > > [...] > > Ich habe jetzt > \s*[(=,\t ]_[a-zA-Z0-9_]* > > genommen. Es funktioniert so halbwegs, ausser das (=, nicht gefunden > werden. Vllt. ist das ja eine spezielle eigenschaft von kate. Vllt. > gibt es ja hier einen kate-spezialisten :) Nee, aber Kmail (für's Filtern) Im Prinzip guckst du einfach, wie maskiert wird. Die Frage ist doch, nach welchem Flavour in Kate Regexes funktionieren (bitte nicht regexp - furchtbar) Wo nicht maskiert wird und \b \s etc. gehen, kannst du von Perl-Flavour ausgehen (und drei Kreuze schlagen). Gruß Gebhard -- Tonight you will pay the wages of sin; Don't forget to leave a tip.
Re: regexp frage
On 11.10.06 13:39:19, Roland M. Kruggel wrote: > > > Ich habe jetzt > > > \s*[(=,\t ]_[a-zA-Z0-9_]* > > > > > > genommen. Es funktioniert so halbwegs, ausser das (=, nicht > > > gefunden werden. > > > > Damit findest du aber auch "_" als Variable. > > Ja. Aber da diese Variable nie vorkommt ist das zu vernachlässigen. Ja aber das zu reparieren ist doch wirklich zu einfach: s/*$/+/ Und gut ist. Andreas -- Avoid gunfire in the bathroom tonight. -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: regexp frage
> > Ich habe jetzt > > \s*[(=,\t ]_[a-zA-Z0-9_]* > > > > genommen. Es funktioniert so halbwegs, ausser das (=, nicht > > gefunden werden. > > Damit findest du aber auch "_" als Variable. Ja. Aber da diese Variable nie vorkommt ist das zu vernachlässigen. > > Vllt. ist das ja eine spezielle eigenschaft von kate. Vllt. > > gibt es ja hier einen kate-spezialisten :) > > Wenn nicht hier dann aber auf kwrite-devel, einfach mal dort > nachfragen. Gute Idee. > Normalerweise sollte Kate da aber diesselben Regexpes > nutzen wie auch der Search/Replace Dialog in Kate selbst. Also mal > ne Quellcode-Datei oeffnen und mit Strg-S den Dialog starten Das kannte ich noch nicht. Thnx > und ein wenig rumexperimentieren. Bin schon dabei. -- cu Roland Kruggel mailto: rk.liste at bbf7.de System: Intel, Debian etch, 2.6.16.16, xfce4 KDE 3.5
Re: regexp frage
On 11.10.06 12:29:36, Roland M. Kruggel wrote: > > > > Da hast du die whitespaces vorher dabei. Ich würde stattdessen ein > > \b (word boundary nehmen): > > > > \b_[a-zA-Z0-9_]+ > > Wobei ich jetzt nicht weiß, welche Buchstaben alle in so einem Ding > > drin sein dürfen. > > > > Eine andere Möglichkeit wären non-greedy Ausdrücke: > > \b_.*?\b > > oder so. > > die funktionieren leider beide nicht. > > Ich habe jetzt > \s*[(=,\t ]_[a-zA-Z0-9_]* > > genommen. Es funktioniert so halbwegs, ausser das (=, nicht gefunden > werden. Damit findest du aber auch "_" als Variable. > Vllt. ist das ja eine spezielle eigenschaft von kate. Vllt. > gibt es ja hier einen kate-spezialisten :) Wenn nicht hier dann aber auf kwrite-devel, einfach mal dort nachfragen. Normalerweise sollte Kate da aber diesselben Regexpes nutzen wie auch der Search/Replace Dialog in Kate selbst. Also mal ne Quellcode-Datei oeffnen und mit Strg-S den Dialog starten und ein wenig rumexperimentieren. Andreas -- Long life is in store for you. -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: regexp frage
> > Da hast du die whitespaces vorher dabei. Ich würde stattdessen ein > \b (word boundary nehmen): > > \b_[a-zA-Z0-9_]+ > Wobei ich jetzt nicht weiß, welche Buchstaben alle in so einem Ding > drin sein dürfen. > > Eine andere Möglichkeit wären non-greedy Ausdrücke: > \b_.*?\b > oder so. die funktionieren leider beide nicht. Ich habe jetzt \s*[(=,\t ]_[a-zA-Z0-9_]* genommen. Es funktioniert so halbwegs, ausser das (=, nicht gefunden werden. Vllt. ist das ja eine spezielle eigenschaft von kate. Vllt. gibt es ja hier einen kate-spezialisten :) -- cu Roland Kruggel mailto: rk.liste at bbf7.de System: Intel, Debian etch, 2.6.16.16, xfce4 KDE 3.5
Re: regexp frage
Hallo, Roland M. Kruggel wrote: > > function aubb_anschrift_delete(_rowid, _para1) > define _rowidint, > _para1char(10) > define rid int, > txt char(20), > txt_2 char(1) > > let rid = _rowid > let txt = "text ",_para1 > let txt_2 = "" > > > Folgedes soll gemacht werden. > Parameter fangen alle (bei mir zu mindestens) mit einem Unterstrich > an. Diese sollen markiert werden. Die Variablen die in der Mitte > einen Unterstrich habe sollen nicht markiert werden, es sei denn sie > haben am Anfang auch einen Unterstrich. Vor der Parametervariablen > können steht eins von den folgenden Zeichen: > ,=( > > Die Parametervariable endet mit einem der folgenden Zeichen > , > Ich habe folgenden regexp definiert > \s*[,=(\t ]_[a-z_]* Da hast du die whitespaces vorher dabei. Ich würde stattdessen ein \b (word boundary nehmen): \b_[a-zA-Z0-9_]+ Wobei ich jetzt nicht weiß, welche Buchstaben alle in so einem Ding drin sein dürfen. Eine andere Möglichkeit wären non-greedy Ausdrücke: \b_.*?\b oder so. Viel Spass beim Experimentieren, Moritz > Es werden alle Parametervariablen markiert, außer die '_rowid' im > Funktionskopf. Ausserdem wird das Zeichen vor dem _ auch markiert. > [,=(\t ] Das soll nicht sein. > > Kann jemand helfen? > -- Moritz Lenz http://moritz.faui2k3.org/ signature.asc Description: OpenPGP digital signature
regexp frage
Hallo Liste, ich bin gerade dabei für kate ein neue Hervorhebungsdatei (schrecklich in deutsch) für informix-4gl zu schreiben. Ich kriege den regexp nicht richtig zusammen und benötige ein wenig Hilfe. Erstmal ein Beispielcode function aubb_anschrift_delete(_rowid, _para1) define _rowidint, _para1char(10) define rid int, txt char(20), txt_2 char(1) let rid = _rowid let txt = "text ",_para1 let txt_2 = "" Folgedes soll gemacht werden. Parameter fangen alle (bei mir zu mindestens) mit einem Unterstrich an. Diese sollen markiert werden. Die Variablen die in der Mitte einen Unterstrich habe sollen nicht markiert werden, es sei denn sie haben am Anfang auch einen Unterstrich. Vor der Parametervariablen können steht eins von den folgenden Zeichen: ,=( Die Parametervariable endet mit einem der folgenden Zeichen , Ich habe folgenden regexp definiert \s*[,=(\t ]_[a-z_]* Es werden alle Parametervariablen markiert, außer die '_rowid' im Funktionskopf. Ausserdem wird das Zeichen vor dem _ auch markiert. [,=(\t ] Das soll nicht sein. Kann jemand helfen? -- cu Roland Kruggel mailto: rk.liste at bbf7.de System: Intel, Debian etch, 2.6.16.16, xfce4 KDE 3.5
Re: Neues Problem mit RegExp (was Re: suche regexp)
Hallo Michael Bienia, hallo auch an alle anderen Mittwoch, 21. Juni 2006 12:34 - Michael Bienia wrote: > > Mit Lookaround-Zusicherungen wie sie z.B. Perl kennt: > s/(?:^|(?<=\|))(\d+)\.(\d\d?\|)/\1,\2/g > Hier wird eine Lookbehind-Zusicherung genutzt, um nachzusehen, ob vor > den Zahlen ein | ist. Eine andere Möglichkeit wäre über eine > Lookahead-Zusicherung nachzusehen, ob nach dem Punkt eine oder zwei > Ziffern und ein | folgen: > s/((^|\|)\d+)\.(?=\d\d?\|)/\1,/g > > sed kennt wowas nicht, also wirst du wohl auf Perl umsteigen müssen. OK, danke. Lookahead und Lookbehind kannte ich noch nicht. Ist aber sehr interessant und wird mir sicherlich auch in Perl-Scripten sehr nützlich werden. Hoffentlich wird es bald auch von anderen Toola mit aufgenommen, da der "Verbrauch" von Zeichen, auf die man später wieder zugreifen will, doch ab und zu mal vorkommt. Und so kann man den ja wunderbar unterbinden. -- Gruß MaxX Bitte beachten: Diese Mailadresse nimmt nur Listenmails entgegen. Für PM bitte den Empfänger gegen den Namen in der Sig tauschen.
Re: suche regexp
On 21.06.06 15:45:19, Bjoern Schliessmann wrote: > Andreas Pakulat wrote: > > > Ich mag Python auch lieber, aber fuer ein paar > > Such/Ersetzungsauftraege mit Regexp ist Perl deutlich besser > > geeignet. > > Ernsthaft, warum ist Perl hier besser geeignet -- ist der Quelltext > kürzer oder die Performance besser? Der Quelltext ist deutlich kuerzer, da Suchen-Ersetzen mit Regex in die Sprache eingebaut ist und nicht ueber ein separates modul (das erst importiert werden muss) realisiert wird. Ein Perl-Skript auf der Kommandozeile ist fast genausolang wie dasselbe mit sed. Ob es schneller ist, weiss ich nicht, weil ich dazu keinerlei Daten habe. Andreas -- Today's weirdness is tomorrow's reason why. -- Hunter S. Thompson -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: suche regexp
Bjoern Schliessmann wrote: Schnüff. Ich hab Angst vor Perl ;) Wieso? Beisst nicht und ist nicht giftig. Ernsthaft, warum ist Perl hier besser geeignet -- ist der Quelltext kürzer oder die Performance besser? Beides. Perl hat z.B. 'automatische Variablen', wo man in Python ein Match-Object verwenden muss/kann. Dadurch hat man in Perl weniger zu tippseln. Nachteil ist der erhöhte Lernaufwand und weniger selbsterklärender Code gegenüber Python. Python ist 'schön' und systematisch, Perl 'praktisch' (und hässlich). Warum ich Python nicht verwende? Weil ich es noch nicht erlernt habe;-) Helmut Wollmersdorfer -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: suche regexp
Andreas Pakulat wrote: > Ich mag Python auch lieber, aber fuer ein paar > Such/Ersetzungsauftraege mit Regexp ist Perl deutlich besser > geeignet. Schnüff. Ich hab Angst vor Perl ;) Ernsthaft, warum ist Perl hier besser geeignet -- ist der Quelltext kürzer oder die Performance besser? Grüße, Björn -- BOFH excuse #103: operators on strike due to broken coffee machine -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Neues Problem mit RegExp (was Re: suche regexp)
On 2006-06-21 07:58:57 +0200, Matthias Houdek wrote: > Hallo > > Dienstag, 20. Juni 2006 20:07 - Matthias Houdek wrote: > > [Ersetzen von Dezimalpunkt durch Dezimalkomma in rein numerischen > > Feldern in folgender Struktur (z.B.) bei ein oder zwei > > Nachkommastellen: > > sd34.43|232232.22|2345.4|324234.324|2323.45|123.41| > > ] > > > > sed -r 's/(^|\|)([0-9]+)\.([0-9]{1,2}\|)/\1\2,\3/g' $file > > Dieser RegExp macht zwar das Gewünschte, auch wenn das numerische Feld > am Zeilenanfang steht. > > Allerdings erfolgt der Wechsel nicht in zwei aufeinanderfolgenden > numerischen Feldern (hier z.B. Felder 2 und 3). Ursache dafür ist, dass > der abschließende Delimiter eines Feldes mit erfasst wird|werden muss > und damit nicht mehr als Einleitung für das nächste Feld aufgenommen > wird. Damit trifft der RegExp für das nachfolgende Feld nicht mehr zu. > > Nun kann man ja diesen sed-Befehl 2 x über die Datei laufen lassen, dann > würden auch die im ersten Durchlauf nicht erfassten geändert. Oder man > verdoppelt zuvor alle Feld-Delimiter. > > Gibt es keine andere Möglichkeit? Mit Lookaround-Zusicherungen wie sie z.B. Perl kennt: s/(?:^|(?<=\|))(\d+)\.(\d\d?\|)/\1,\2/g Hier wird eine Lookbehind-Zusicherung genutzt, um nachzusehen, ob vor den Zahlen ein | ist. Eine andere Möglichkeit wäre über eine Lookahead-Zusicherung nachzusehen, ob nach dem Punkt eine oder zwei Ziffern und ein | folgen: s/((^|\|)\d+)\.(?=\d\d?\|)/\1,/g sed kennt wowas nicht, also wirst du wohl auf Perl umsteigen müssen. Michael -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Neues Problem mit RegExp (was Re: suche regexp)
Am Mittwoch, 21. Juni 2006 07:58 schrieb Matthias Houdek: > Hallo > > Dienstag, 20. Juni 2006 20:07 - Matthias Houdek wrote: > > [Ersetzen von Dezimalpunkt durch Dezimalkomma in rein numerischen > > Feldern in folgender Struktur (z.B.) bei ein oder zwei > > Nachkommastellen: > > sd34.43|232232.22|2345.4|324234.324|2323.45|123.41| > > ] > > > > sed -r 's/(^|\|)([0-9]+)\.([0-9]{1,2}\|)/\1\2,\3/g' $file > > Dieser RegExp macht zwar das Gewünschte, auch wenn das numerische > Feld am Zeilenanfang steht. > > Allerdings erfolgt der Wechsel nicht in zwei aufeinanderfolgenden > numerischen Feldern (hier z.B. Felder 2 und 3). Ursache dafür ist, > dass der abschließende Delimiter eines Feldes mit erfasst > wird|werden muss und damit nicht mehr als Einleitung für das > nächste Feld aufgenommen wird. Damit trifft der RegExp für das > nachfolgende Feld nicht mehr zu. Habe ich auch gestern festgestellt. Ich habe ihn einfach zweimal durchlaufen lassen. :) Nicht elegant, aber funktionell :) -- cu Roland Kruggel mailto: rk.liste at bbf7.de System: Intel, Debian etch, 2.6.16.16, xfce4 KDE 3.5
Neues Problem mit RegExp (was Re: suche regexp)
Hallo Dienstag, 20. Juni 2006 20:07 - Matthias Houdek wrote: > [Ersetzen von Dezimalpunkt durch Dezimalkomma in rein numerischen > Feldern in folgender Struktur (z.B.) bei ein oder zwei > Nachkommastellen: > sd34.43|232232.22|2345.4|324234.324|2323.45|123.41| > ] > > sed -r 's/(^|\|)([0-9]+)\.([0-9]{1,2}\|)/\1\2,\3/g' $file Dieser RegExp macht zwar das Gewünschte, auch wenn das numerische Feld am Zeilenanfang steht. Allerdings erfolgt der Wechsel nicht in zwei aufeinanderfolgenden numerischen Feldern (hier z.B. Felder 2 und 3). Ursache dafür ist, dass der abschließende Delimiter eines Feldes mit erfasst wird|werden muss und damit nicht mehr als Einleitung für das nächste Feld aufgenommen wird. Damit trifft der RegExp für das nachfolgende Feld nicht mehr zu. Nun kann man ja diesen sed-Befehl 2 x über die Datei laufen lassen, dann würden auch die im ersten Durchlauf nicht erfassten geändert. Oder man verdoppelt zuvor alle Feld-Delimiter. Gibt es keine andere Möglichkeit? -- Gruß MaxX Bitte beachten: Diese Mailadresse nimmt nur Listenmails entgegen. Für PM bitte den Empfänger gegen den Namen in der Sig tauschen.
Re: suche regexp
On 21.06.06 00:11:56, Bjoern Schliessmann wrote: > Roland M. Kruggel wrote: > > > Perl hört sich gut an. > > > Python! Python! :) > http://www.python.org/ > Ich mag Python auch lieber, aber fuer ein paar Such/Ersetzungsauftraege mit Regexp ist Perl deutlich besser geeignet. Andreas -- Communicate! It can't make things any worse. -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: suche regexp
Roland M. Kruggel wrote: > Perl hört sich gut an. Python! Python! :) http://www.python.org/ Grüße, Björn -- BOFH excuse #141: disks spinning backwards - toggle the hemisphere jumper. -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: suche regexp
Am Dienstag, 20. Juni 2006 20:07 schrieb Matthias Houdek: > Damit vereinfacht sich det Janze natürlich wieda, wa: > > sed -r 's/(^|\|)([0-9]+)\.([0-9]{1,2}\|)/\1\2,\3/g' $oldfile > > $newfile Ich habe mich zu dieser Variante entschieden. Recht herzlichen Dank an alle Beteiligten. Ihr habt mir sehr geholfen und ich habe wieder viel dazugelernt. Vllt. verstehe ich ja irgendwann die regexp richtig. Ihr habt mich jedenfalls ein grosses stück weiter gebracht. -- cu Roland Kruggel mailto: rk.liste at bbf7.de System: Intel, Debian etch, 2.6.16.16, xfce4 KDE 3.5
Re: suche regexp
Hallo Christian Frommeyer, hallo auch an alle anderen Dienstag, 20. Juni 2006 19:03 - Christian Frommeyer wrote: > Am Dienstag 20 Juni 2006 18:03 schrieb Matthias Houdek: > > *Argh* - bei sed sind es mal wieder Basic-RegExp, also immer schön > > ein Backslash vor die Klammern und das Oder-Zeichen "|". > > sed -r ist Dein Freund ;) Danke. Ich nutze sed in letzter Zeit selten. Ein Blick in die Manpage brachte mir: $ man sed | grep -r '^ *-\?r' -A 3 Formatiere sed(1) neu, bitte warten... [...] r Datei der Inhalt der Datei wird ausgegeben, bevor die nächste Zeile gelesen wird Werde wohl doch endlich mal die deutschen Manpages wieder runterschmeißen, weil hier: [EMAIL PROTECTED]:~# man -L en sed | grep -r '^ *-\?r' -A 3 Reformatting sed(1), please wait... -r, --regexp-extended use extended regular expressions in the script. [...] r filename Append text read from filename. Auch die Option 'r filename' verstehe ich anders als die deutsche Übersetzung (die ich ehrlich gesagt überhaupt nicht so richtig verstehe). *grmpfrg* Damit vereinfacht sich det Janze natürlich wieda, wa: sed -r 's/(^|\|)([0-9]+)\.([0-9]{1,2}\|)/\1\2,\3/g' $oldfile > $newfile -- Gruß MaxX Bitte beachten: Diese Mailadresse nimmt nur Listenmails entgegen. Für PM bitte den Empfänger gegen den Namen in der Sig tauschen.
Re: suche regexp
Hallo Thorsten Haude, hallo auch an alle anderen Dienstag, 20. Juni 2006 19:39 - Thorsten Haude wrote: > Moin, > > * Matthias Houdek wrote (2006-06-20 16:51): > >Dienstag, 20. Juni 2006 16:21 - Thorsten Haude wrote: > >> * Thorsten Haude wrote (2006-06-20 16:11): > >> >s/((^|\|)/\d*)\.(\d{1,2}|)/\1,\2/ > >> > >> Falsch so sollte es gehen: > >> s/(^|\|)(\d*)\.(\d{1,2}|)/\2,\3/ > > > >Autsch, das geht auch daneben. ;-) > > > >Das lässt den | vor den Vorkommastellen unter den Tisch fallen. > > Ach ja, den brauchen wir ja auch noch. > > >RegExp sind was tolles, aber man muss auch höllisch aufpassen und > > auf jeden Fall ausgiebig testen, bevor man an wichtige Daten > > rangeht. > > Ja, danke, weiß ich. Normalerweise mache ich das auch nicht trocken. Gut, dass ich dann doch ein wenig probiert habe. Hab dabei sogar noch was dazugelernt (oder wiederentdeckt? - muss mir mal ein paar uralte Scripte von mir rauskramen). -- Gruß MaxX Bitte beachten: Diese Mailadresse nimmt nur Listenmails entgegen. Für PM bitte den Empfänger gegen den Namen in der Sig tauschen.
Re: suche regexp
Moin, * Roland M. Kruggel wrote (2006-06-20 16:27): >Am Dienstag, 20. Juni 2006 16:11 schrieb Thorsten Haude: >> Ergebnis: >> /(^|\|)/\d*\.\d{1,2}|/ > ^ >ist dann nicht der zuviel? Stimmt, keine Ahnung, wo der herkommt. >Wäre es unverschämt von mir, wenn ich um einen perlaufruf bitten >würde. Dann könnte ich mir ein bash-script bauen das die ganzen 58 >File nacheinander abklappert. Warum die Mühe? Gibt es irgendetwas, das Bash kann, Perl aber nicht? Thorsten -- He who receives an idea from me, receives instruction himself without lessening mine; as he who lights his taper at mine, receives light without darkening me. - Thomas Jefferson pgpjOarRyDvXO.pgp Description: PGP signature
Re: suche regexp
Moin, * Matthias Houdek wrote (2006-06-20 16:51): >Dienstag, 20. Juni 2006 16:21 - Thorsten Haude wrote: >> * Thorsten Haude wrote (2006-06-20 16:11): >> >s/((^|\|)/\d*)\.(\d{1,2}|)/\1,\2/ >> >> Falsch so sollte es gehen: >> s/(^|\|)(\d*)\.(\d{1,2}|)/\2,\3/ > >Autsch, das geht auch daneben. ;-) > >Das lässt den | vor den Vorkommastellen unter den Tisch fallen. Ach ja, den brauchen wir ja auch noch. >RegExp sind was tolles, aber man muss auch höllisch aufpassen und auf >jeden Fall ausgiebig testen, bevor man an wichtige Daten rangeht. Ja, danke, weiß ich. Normalerweise mache ich das auch nicht trocken. Thorsten -- Omnis enim res, quae quando non deficit, dum habetur et non datur, nondum habetur, quomodo habenda est. - Aurelius Augustinus pgpWYftW6SQRO.pgp Description: PGP signature
Re: suche regexp
Am Dienstag 20 Juni 2006 18:03 schrieb Matthias Houdek: > *Argh* - bei sed sind es mal wieder Basic-RegExp, also immer schön > ein Backslash vor die Klammern und das Oder-Zeichen "|". sed -r ist Dein Freund ;) Gruß Chris -- A: because it distrupts the normal process of thought Q: why is top posting frowned upon
Re: suche regexp
Hallo Matthias Houdek, hallo auch an alle anderen Dienstag, 20. Juni 2006 16:56 - Matthias Houdek wrote: > Hallo Roland M. Kruggel, hallo auch an alle anderen > > Dienstag, 20. Juni 2006 16:27 - Roland M. Kruggel wrote: > > Am Dienstag, 20. Juni 2006 16:11 schrieb Thorsten Haude: > > > Moin, > > > > > > * Roland M. Kruggel wrote (2006-06-20 14:28): > > > >Ich muss jetzt in einigen Felder den Punkt durch ein Komma > > > > ersetzen. Eigentlich trivial wenn da nicht das Datum und das > > > > Textfeld drin wäre. Dort müssen die Punkte bleiben. > > > > > > Also: > > > Zeilenanfang oder | (^||) > > > dann beliebig viele Ziffern \d* > > > dann ein Punkt \. > > > dann ein oder zwei Ziffern \d{1,2} > > > dann ein | | > > > > Verstanden > > > > > Ergebnis: > > > /(^|\|)/\d*\.\d{1,2}|/ > > > > ^ > > ist dann nicht der zuviel? > > > > > Wenn die Zahlen wie in Deutschland üblich immer eine > > > Vorkommastelle haben sollen, dann mußt Du den * durch ein + > > > ersetzen. > > > > > > Wie Du den Punkt ersetzt hängt von der Umgebung und Deinen > > > Vorlieben ab. In Perl zB. so ungefähr: > > > s/((^|\|)/\d*)\.(\d{1,2}|)/\1,\2/ > > > > Perl hört sich gut an. > > Wäre es unverschämt von mir, wenn ich um einen perlaufruf bitten > > würde. Dann könnte ich mir ein bash-script bauen das die ganzen 58 > > File nacheinander abklappert. > > Wenn du es mit einem Bash-Script machen willst, dann nimm doch sed. > > oldfile = "" > newfile = "" > sed 's/(^|\|)(\d+)\.(\d{1,2}\|)/\1\2,\3/g' $oldfile > $newfile *Argh* - bei sed sind es mal wieder Basic-RegExp, also immer schön ein Backslash vor die Klammern und das Oder-Zeichen "|". sed 's/\(^\||\)\([0-9]*\)\.\([0-9]\{1,2\}|\)/\1\2,\3/g' $oldfile > $newfile > Das kannst du dir jetzt noch schön in eine Schleife einbasteln ;-) > > Und testen! Weil: Wie immer ohne Gewähr *g* Hab ich gerade getestet, sollte klappen. Zumindest, solange auch das letzte Datenfeld mit einem "|" abgeschlossen wird (in deiner ersten Mail stand es so). Ansonsten sollte das hier klappen (ist ergänzt um das Zeilenende als möglichen Feldabschluss): sed 's/\(^\||\)\([0-9]*\)\.\([0-9]\{1,2\}\)\(|\|$\)/\1\2,\3\4/g' $oldfile > $newfile (alles in eine Zeile) -- Gruß MaxX Bitte beachten: Diese Mailadresse nimmt nur Listenmails entgegen. Für PM bitte den Empfänger gegen den Namen in der Sig tauschen.
Re: suche regexp
Roland M. Kruggel wrote: Perl hört sich gut an. Wäre es unverschämt von mir, wenn ich um einen perlaufruf bitten würde. Dann könnte ich mir ein bash-script bauen das die ganzen 58 File nacheinander abklappert. In Perl kannst auch Files mit einer Schleife durchlaufen, bzw. ganze sogar ganze Hierarchien von Verzeichnissen. Eine entsprechende Subroutine in Perl sieht etwa so aus: sub read_files { my ( $dir, $sub_dir, $file_extension, $hash_ref ) = @_; my $current_dir = check_dir ($dir); local(*CURDIR); print STDERR "opening dir \"$current_dir\" for read\n" if $VERBOSE >= 2; opendir(CURDIR,"$current_dir") or die "Can't open directory \"$current_dir\"\n"; #rewinddir(DIR); print STDERR "selecting files\n" if $VERBOSE >= 3; my @entries = readdir CURDIR ; #my @files = grep {/^.+\.$file_extension$/} readdir CURDIR ; closedir (CURDIR); #print "dir entries \t [ @files ] \n" if $VERBOSE >= 3; for my $dir_entry ( sort @entries ) { my $target = $current_dir . $dir_entry; if ( $dir_entry =~ m/^$file_extension$/ ) { read_file ($current_dir, $dir_entry, $hash_ref) if -f $target; } else { if ( $dir_entry =~ m/^(\.\w|\w).*$/ ) { read_files ($target, $sub_dir, $file_extension,$hash_ref ) if -d $target; } } } } Bei komplexeren Sachen ist Perl halt flexibler, aber das Erlernen zahlt sich aus. In Deinem Fall würde ein Shell-Script mit den üblichen Utilities auch reichen. Ist halt eine Geschmacksfrage, ob man sich tiefer in bash & co oder lieber gleich in Perl einarbeitet. Mir war für das Umformatieren sed, awk, find, sort, tr, uniq etc. auf die Dauer zu mühsam, weshalb ich Perl bevorzuge. Helmut Wollmersdorfer -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: suche regexp
Hallo Roland M. Kruggel, hallo auch an alle anderen Dienstag, 20. Juni 2006 16:27 - Roland M. Kruggel wrote: > Am Dienstag, 20. Juni 2006 16:11 schrieb Thorsten Haude: > > Moin, > > > > * Roland M. Kruggel wrote (2006-06-20 14:28): > > >Ich muss jetzt in einigen Felder den Punkt durch ein Komma > > > ersetzen. Eigentlich trivial wenn da nicht das Datum und das > > > Textfeld drin wäre. Dort müssen die Punkte bleiben. > > > > Also: > > Zeilenanfang oder | (^||) > > dann beliebig viele Ziffern \d* > > dann ein Punkt \. > > dann ein oder zwei Ziffern \d{1,2} > > dann ein | | > > Verstanden > > > Ergebnis: > > /(^|\|)/\d*\.\d{1,2}|/ > > ^ > ist dann nicht der zuviel? > > > Wenn die Zahlen wie in Deutschland üblich immer eine Vorkommastelle > > haben sollen, dann mußt Du den * durch ein + ersetzen. > > > > Wie Du den Punkt ersetzt hängt von der Umgebung und Deinen > > Vorlieben ab. In Perl zB. so ungefähr: > > s/((^|\|)/\d*)\.(\d{1,2}|)/\1,\2/ > > Perl hört sich gut an. > Wäre es unverschämt von mir, wenn ich um einen perlaufruf bitten > würde. Dann könnte ich mir ein bash-script bauen das die ganzen 58 > File nacheinander abklappert. Wenn du es mit einem Bash-Script machen willst, dann nimm doch sed. oldfile = "" newfile = "" sed 's/(^|\|)(\d+)\.(\d{1,2}\|)/\1\2,\3/g' $oldfile > $newfile Das kannst du dir jetzt noch schön in eine Schleife einbasteln ;-) Und testen! Weil: Wie immer ohne Gewähr *g* -- Gruß MaxX Bitte beachten: Diese Mailadresse nimmt nur Listenmails entgegen. Für PM bitte den Empfänger gegen den Namen in der Sig tauschen.
Re: suche regexp
Hallo Thorsten Haude, hallo auch an alle anderen Dienstag, 20. Juni 2006 16:21 - Thorsten Haude wrote: > Moin, > > * Thorsten Haude wrote (2006-06-20 16:11): > >s/((^|\|)/\d*)\.(\d{1,2}|)/\1,\2/ > > Falsch so sollte es gehen: > s/(^|\|)(\d*)\.(\d{1,2}|)/\2,\3/ Autsch, das geht auch daneben. ;-) Das lässt den | vor den Vorkommastellen unter den Tisch fallen. RegExp sind was tolles, aber man muss auch höllisch aufpassen und auf jeden Fall ausgiebig testen, bevor man an wichtige Daten rangeht. -- Gruß MaxX Bitte beachten: Diese Mailadresse nimmt nur Listenmails entgegen. Für PM bitte den Empfänger gegen den Namen in der Sig tauschen.
Re: suche regexp
Hallo Roland M. Kruggel, hallo auch an alle anderen Dienstag, 20. Juni 2006 15:58 - Roland M. Kruggel wrote: > > > Gemeinsamkeiten der Decimalfelder: > > > * nur zahlen > > > * beliebige Vorkomma-Stellen > > > * eine oder zwei Nachkommastellen > > > * am ende immer ein '|' > > > * immer ein Punkt als Dezimalzeichen > > > > vim: > > :%s/\(\d\+\)\.\(\(\d\|\d\d\)|\)/\1,\2/g > > Megagei. :) > Ich frage jetzt nicht nach dem Wie. Hut ab, Michael. > Danke. Vorsicht! Nicht ungetestet übernehmen. 1. Viele RegExp-Dialekte interpretieren \( bzw \) als das jeweilige Klammerzeichen. Die Klammer zum Gruppieren darf dann nicht hinter einem Backslash stehen. 2. Zur Erklärung (muss man sich mal mit befassen, ist gar nicht soo schwer): s bedeutet: Tausche das, was nach dem nächsten Delimiter (hier: "/") steht, gegen das, was nach dem 2. Delimiter steht. Das g hinter dem 3. Delimiter heißt, dass das ganze global erfolgen soll. Im ersten Bereich steht eine Klammer zur Gruppierung und in der Klammer das \d für ein Digit (Ziffer 0..9) und das + danach für mind. 1 Mal. Danach folgt ein Punkt (mit einem vorangestellten Backslash, sonst steht er für ein beliebiges Zeichen). Danach folgt eine zweite Klammergruppierung, in der ein Digit oder (dargestellt durch "|") zwei Digits stehen können, gefolgt von dem "|" als dein Datenbankdelimiter. Jede Zeichenfolge, auf die diese Beschreibung zutrifft (mind. 1 Ziffer, dann ein Punkt, dann 1 oder 2 Ziffern und das "|"), wird nun durch das Folgende ersetzt (steht nach dem zweiten /): \1 schreibt alles, auf das die erste Klammergruppierung passte. Danach kommt das Komma und dann mit \2 alles, auf das die 2. Klammergruppierung zutraf. Ich hoffe, du findest mit dieser kleinen Beschreibung Gefallen an der Mächtigkeit Regulärer Ausdrücke ;-) Eine Alternative (aber auch ohne Gewähr, bitte vorher testen) findest du in meiner anderen Mail. -- Gruß MaxX Bitte beachten: Diese Mailadresse nimmt nur Listenmails entgegen. Für PM bitte den Empfänger gegen den Namen in der Sig tauschen.
Re: suche regexp
Hallo Matthias Houdek, hallo auch an alle anderen Dienstag, 20. Juni 2006 16:12 - Matthias Houdek wrote: > [...] > s/((^|\|)\d+).(\d{1,2}\|)/\1,\3/g ^^ Urps, da muss natürlich noch ein Backslash vor den Punkt. -- Gruß MaxX Bitte beachten: Diese Mailadresse nimmt nur Listenmails entgegen. Für PM bitte den Empfänger gegen den Namen in der Sig tauschen.
Re: suche regexp
Am Dienstag, 20. Juni 2006 16:11 schrieb Thorsten Haude: > Moin, > > * Roland M. Kruggel wrote (2006-06-20 14:28): > >Ich muss jetzt in einigen Felder den Punkt durch ein Komma > > ersetzen. Eigentlich trivial wenn da nicht das Datum und das > > Textfeld drin wäre. Dort müssen die Punkte bleiben. > > Also: > Zeilenanfang oder | (^||) > dann beliebig viele Ziffern \d* > dann ein Punkt \. > dann ein oder zwei Ziffern \d{1,2} > dann ein | | Verstanden > Ergebnis: > /(^|\|)/\d*\.\d{1,2}|/ ^ ist dann nicht der zuviel? > Wenn die Zahlen wie in Deutschland üblich immer eine Vorkommastelle > haben sollen, dann mußt Du den * durch ein + ersetzen. > > Wie Du den Punkt ersetzt hängt von der Umgebung und Deinen > Vorlieben ab. In Perl zB. so ungefähr: > s/((^|\|)/\d*)\.(\d{1,2}|)/\1,\2/ Perl hört sich gut an. Wäre es unverschämt von mir, wenn ich um einen perlaufruf bitten würde. Dann könnte ich mir ein bash-script bauen das die ganzen 58 File nacheinander abklappert. -- cu Roland Kruggel mailto: rk.liste at bbf7.de System: Intel, Debian etch, 2.6.16.16, xfce4 KDE 3.5
Re: suche regexp
Moin, * Thorsten Haude wrote (2006-06-20 16:11): >s/((^|\|)/\d*)\.(\d{1,2}|)/\1,\2/ Falsch so sollte es gehen: s/(^|\|)(\d*)\.(\d{1,2}|)/\2,\3/ Thorsten -- Why do we drink cow's milk? Who was the first guy who first looked at a cow and said "I think I'll drink whatever comes out of these things when I squeeze 'em!"? - Calvin pgpb2uU6KYnz9.pgp Description: PGP signature
Re: suche regexp
Moin, * Matthias Houdek wrote (2006-06-20 16:12): >Folgendes sollte es aber treffen (ungetestet, ggf. die Syntax je nach >verwendetem Dialekt anpassen, z.B. Klammern "escapen" wie oben): > >s/((^|\|)\d+).(\d{1,2}\|)/\1,\3/g ^ Da war ich mir nicht so sicher, ob das gebraucht wird. >Meiner Meinung nach sollte hier nach dem Komma der Inhalt der 3. Klammer >kommen (\3), denn die 2. Klammer enthält ja den Zeilenanfang oder den >vorhergehenden "|". Da war ich auch falsch. Thorsten -- I'd rather have friends who care than friends who agree with me. - Arlo Guthrie pgpgcqsGa8spf.pgp Description: PGP signature
Re: suche regexp
Moin, * Roland M. Kruggel wrote (2006-06-20 14:28): >Ich muss jetzt in einigen Felder den Punkt durch ein Komma ersetzen. >Eigentlich trivial wenn da nicht das Datum und das Textfeld drin >wäre. Dort müssen die Punkte bleiben. Also: Zeilenanfang oder | (^||) dann beliebig viele Ziffern \d* dann ein Punkt \. dann ein oder zwei Ziffern \d{1,2} dann ein | | Ergebnis: /(^|\|)/\d*\.\d{1,2}|/ Wenn die Zahlen wie in Deutschland üblich immer eine Vorkommastelle haben sollen, dann mußt Du den * durch ein + ersetzen. Wie Du den Punkt ersetzt hängt von der Umgebung und Deinen Vorlieben ab. In Perl zB. so ungefähr: s/((^|\|)/\d*)\.(\d{1,2}|)/\1,\2/ Thorsten -- Anyone who is capable of getting themselves made President should on no account be allowed to do the job. - The Book pgpfjZcanBJOl.pgp Description: PGP signature
Re: suche regexp
Am Dienstag, 20. Juni 2006 14:51 schrieb Michael Ott: > > Gemeinsamkeiten der Decimalfelder: > > * nur zahlen > > * beliebige Vorkomma-Stellen > > * eine oder zwei Nachkommastellen > > * am ende immer ein '|' > > * immer ein Punkt als Dezimalzeichen > > vim: > :%s/\(\d\+\)\.\(\(\d\|\d\d\)|\)/\1,\2/g Eine Klitzekleinigkeit bittr noch. Da es sich um mehrere Dateien handelt (ca. 50) wollte ich eine map ind der .vimrc definieren. map :%s/\(\d\+\)\.\(\(\d\|\d\d\)|\)/\1,\2/g geht schief. Mit der Fehlermeldung ---> [EMAIL PROTECTED]:~/develop/keim/keim.exp$ vi kalk200161.unl Fehler beim Ausführen von "/home/rkruggel/.vimrc": Zeile 11: E10: \ sollte von /, ? or & gefolgt werden Drücken Sie die EINGABETASTE oder geben Sie einen Befehl ein ---< Du hast doch bestimmt eine Lösung auch für dieses Problem :) -- cu Roland Kruggel mailto: rk.liste at bbf7.de System: Intel, Debian etch, 2.6.16.16, xfce4 KDE 3.5
Re: suche regexp
Hallo Michael Ott, hallo auch an alle anderen Dienstag, 20. Juni 2006 14:51 - Michael Ott wrote: > Hallo Roland! > > > ich brauche mal die spezialisten für regexp, sed, awk oder > > ähnliches. > > > > Folgendes Problem tritt bei einer Konvertierung einer Datenbank > > auf. Es gibt folgende Datensätze ind dieser und ähnlicher Form. > > Delimiter ist immer '|' > > > > ---> > > 30102136030.0|20|30102|silo 22.0|136|30|1| > >+ - > > GH-Schale 7086.00 782|10.0|7421|0|stk|33,83|0,00| > > - > > 0,00|0.0|33,83|2.0|26.03.2001|1.0|30102|121|1| > > + +- - + > > kroeger|2001-03-26 15:55:22|102|||1|0|0| > > ---< > > > > Ich muss jetzt in einigen Felder den Punkt durch ein Komma > > ersetzen. Eigentlich trivial wenn da nicht das Datum und das > > Textfeld drin wäre. Dort müssen die Punkte bleiben. > > > > Gemeinsamkeiten der Decimalfelder: > > * nur zahlen > > * beliebige Vorkomma-Stellen > > * eine oder zwei Nachkommastellen > > * am ende immer ein '|' > > * immer ein Punkt als Dezimalzeichen > > vim: > :%s/\(\d\+\)\.\(\(\d\|\d\d\)|\)/\1,\2/g auf gut Deutsch: tausche (mind. 1 Ziffer).(Ziffer od. 2 Ziffern und "|") gegen (Inhalt der 1. Klammer),(Inhalt der 2. Klammer) - und das überall Das träfe auch auf "silo 22.0" zu. Außerdem wäre IMHO für die 2. Klammer (die Nachkommastellen) folgendes einfacher: (\d{1,2}\|) Folgendes sollte es aber treffen (ungetestet, ggf. die Syntax je nach verwendetem Dialekt anpassen, z.B. Klammern "escapen" wie oben): s/((^|\|)\d+).(\d{1,2}\|)/\1,\3/g Meiner Meinung nach sollte hier nach dem Komma der Inhalt der 3. Klammer kommen (\3), denn die 2. Klammer enthält ja den Zeilenanfang oder den vorhergehenden "|". hth -- Gruß MaxX Bitte beachten: Diese Mailadresse nimmt nur Listenmails entgegen. Für PM bitte den Empfänger gegen den Namen in der Sig tauschen.
Re: suche regexp
> > > > Gemeinsamkeiten der Decimalfelder: > > * nur zahlen > > * beliebige Vorkomma-Stellen > > * eine oder zwei Nachkommastellen > > * am ende immer ein '|' > > * immer ein Punkt als Dezimalzeichen > > vim: > :%s/\(\d\+\)\.\(\(\d\|\d\d\)|\)/\1,\2/g Megagei. :) Ich frage jetzt nicht nach dem Wie. Hut ab, Michael. Danke. -- cu Roland Kruggel mailto: rk.liste at bbf7.de System: Intel, Debian etch, 2.6.16.16, xfce4 KDE 3.5
Re: suche regexp
Hallo Roland! > ich brauche mal die spezialisten für regexp, sed, awk oder ähnliches. > > Folgendes Problem tritt bei einer Konvertierung einer Datenbank auf. > Es gibt folgende Datensätze ind dieser und ähnlicher Form. Delimiter > ist immer '|' > > ---> > 30102136030.0|20|30102|silo 22.0|136|30|1| >+ - > GH-Schale 7086.00 782|10.0|7421|0|stk|33,83|0,00| > - > 0,00|0.0|33,83|2.0|26.03.2001|1.0|30102|121|1| > + +- - + > kroeger|2001-03-26 15:55:22|102|||1|0|0| > ---< > > Ich muss jetzt in einigen Felder den Punkt durch ein Komma ersetzen. > Eigentlich trivial wenn da nicht das Datum und das Textfeld drin > wäre. Dort müssen die Punkte bleiben. > > Gemeinsamkeiten der Decimalfelder: > * nur zahlen > * beliebige Vorkomma-Stellen > * eine oder zwei Nachkommastellen > * am ende immer ein '|' > * immer ein Punkt als Dezimalzeichen vim: :%s/\(\d\+\)\.\(\(\d\|\d\d\)|\)/\1,\2/g CU Michael -- ,''`. Michael Ott, e-mail: michael at zolnott dot de : :' : Debian SID on Thinkpad T43: `. `'http://www.zolnott.de/laptop/ibm-t43-uc34nge.html `- Jeden Mittwoch von 21 - 24 Uhr. Zosh! auf Radio Z. Das Härteste, was der Musikmarkt zu bieten hat. http://www.zosh.de Online hören: http://www.radio-z.net
suche regexp
Hallo Liste, ich brauche mal die spezialisten für regexp, sed, awk oder ähnliches. Folgendes Problem tritt bei einer Konvertierung einer Datenbank auf. Es gibt folgende Datensätze ind dieser und ähnlicher Form. Delimiter ist immer '|' ---> 30102136030.0|20|30102|silo 22.0|136|30|1| + - GH-Schale 7086.00 782|10.0|7421|0|stk|33,83|0,00| - 0,00|0.0|33,83|2.0|26.03.2001|1.0|30102|121|1| + +- - + kroeger|2001-03-26 15:55:22|102|||1|0|0| ---< Ich muss jetzt in einigen Felder den Punkt durch ein Komma ersetzen. Eigentlich trivial wenn da nicht das Datum und das Textfeld drin wäre. Dort müssen die Punkte bleiben. Gemeinsamkeiten der Decimalfelder: * nur zahlen * beliebige Vorkomma-Stellen * eine oder zwei Nachkommastellen * am ende immer ein '|' * immer ein Punkt als Dezimalzeichen Die Felder die geändert werden müssen habe ich mit einem '+' gekennzeichnet, die die nicht geändert werden dürfen mit einem '-'. Danke schon mal im vorraus. -- cu Roland Kruggel mailto: rk.liste at bbf7.de System: Intel, Debian etch, 2.6.16.16, xfce4 KDE 3.5
Re: Für die sed / RegExp Experten
Hallo Matthias, Matthias Hentges, 26.01.2004 (d.m.y): > Folgendes Problem: > > echo "2.6.2-rc1-mm3"| sed s/\-mm[1-99]// > > bringt als Ergebnis "2.6.2-rc1". > > Ich möchte aber genau das Gegenteil erhalten, nähmlich > > "-mm3" Wenn es Dir nur um die letzten drei Zeichen geht _und_ die gesamte Zeichenkette immer die gleiche Laenge hat, koenntest Du statt mit sed in diesem Fall mit "cut" arbeiten... Gruss, Christian -- Aufopferung ist leichter als Rechtschaffenheit. -- Jean Paul pgp0.pgp Description: PGP signature
Re: Für die sed / RegExp Experten
Am Dienstag, 27. Januar 2004 09:32 schrieb Andreas Schmidt: > > Die manpage von SED war nicht wirklich erleuchtend > > Ich hoffe, etwas hilfreicher sein zu koennen. :-) Hallo Andreas, mir hat es auf jeden Fall Lust gemacht, sed genauer anzuschauen - gute, verständliche Erklärung! Mit freundlichen Grüßen Tobias Hilbricht -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Für die sed / RegExp Experten [SOLVED]
Hallo! Vielen Dank an Christoph und Uwe für die RegExp und ganz besonders an Andreas für die super Erklärung!! Leider ist solch erweiterte RegExp noch etwas zu hoch für mich, aber der Tip mit /\.*(irgendwas\)/\1/ ist Gold wert. Vielen Dank nochmal :) -- Matthias Hentges Cologne / Germany [www.hentges.net] -> PGP welcome, HTML tolerated ICQ: 97 26 97 4 -> No files, no URL's My OS: Debian Woody. Geek by Nature, Linux by Choice -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Für die sed / RegExp Experten
On 2004.01.26 11:15, Matthias Hentges wrote: Hallo Liste! Ich lese mittlerweile seit zwei Stunden diverse sed HowTo's aber ich bin wohl irgendwie zu dumm. Folgendes Problem: echo "2.6.2-rc1-mm3"| sed s/\-mm[1-99]// bringt als Ergebnis "2.6.2-rc1". Ich möchte aber genau das Gegenteil erhalten, nähmlich "-mm3" Also quasi eine invertierte RegExp, wobei aber nur der "-mm[1-99] Teil des Strings bekannt ist. Kenne mich mit sed-Syntax zwar nicht sonderlich aus, aber dafuer ein bisschen mit PERL, und reg-exes sind ja vom Prinzip her eh ueberall aehnlich. :-) Zunaechst einmal a line recklessly stolen from Christoph Maurer <[EMAIL PROTECTED]>: echo "2.6.2-rc1-mm3"| sed "s/.*\(-mm[0-9]\{1,\}\)/\1/" Ich verlasse mich einfach mal drauf, dass die Syntax bei ihm stimmt. :-) Könnte mir da jemand auf die Sprünge helfen? Möglichst mit Erklärung :) Ein Schubs in die richtige Richtung wäre schon genug. Und jetzt auf meinem eigenen Mist gewachsen der Schubs: s/expression 1/expression 2/ sucht in einer Zeichenkette nach dem Ausdruck "expression 1" und ersetzt ihn mit "expression 2". Du hast zwar in "2.6.2-rc1-mm3" korrekt nach "\-mm[1-99]" gesucht, das dann aber mit nichts ersetzt. Bei Christoph setzt sich der Suchstring so zusammen: .* alles uninteressante, was vor dem gesuchten Teil des Ausdruckes steht -mm[0-9]{1,} der gesuchte Teil Zwischen den eckigen Klammern ist ein Bereich erlaubter Zeichen angegeben. Damit wird aber immer nur nach _einem_ Zeichen gesucht. [1- 99] wuerde zB nicht funktionieren, um "23" zu finden, weil die 99 eben nicht fuer neunundneunzig steht, sondern einfach nur das Zeichen "9" doppelt in der Liste erlaubter Zeichen vorkommt. Effektiv laesst du also nur die Ziffern 1-9 zu, schliesst aber 0 aus. Ausserdem suchst du nur nach einer einzigen Ziffer. Statt "23" wuerde also nur "2" gefunden werden. Christoph hat jetzt mit [0-9] den gueltigen Bereich um die 0 erweitert und mit ein bisschen Magic umgeben: Mit {1,} hat er festgelegt, dass das vorherstehende Zeichen mindestens einmal vorkommen muss. Mit {1,3} haette er auch sagen koennen, dass es mindestens einmal, jedoch nicht haeufiger als dreimal vorkommen darf; und mit {2} muesste es genau zweimal vorkommen. Den gesuchten Ausdruck hat er mit den runden Klammern als Teilausdruck festgelegt, auf den er spaeter Bezug nehmen kann. Das macht er im zweiten Teil mit \1: s/.*\(-mm[0-9]\{1,\}\)/\1/ Die \1 ist eine interne Variable, die einfach die Position des Ausdruckes in runden Klammern angibt. Der gesamte Ausdruck .*(-mm[0-9] {1,}) wird also durch den ersten eingeklammerten Teilausdruck ersetzt. Weil das so kompliziert ausgedrueckt ist, nochmal ein anderes Beispiel. Deinen Suchausdruck koennte man zB folgendermassen schreiben: /\(.*\)\(-\)\(mm[0-9]\{1,\}\)/ Dann waere: \1 \(.*\) \2 \(-\) \3 \(mm[0-9]\{1,\}\) Mit s/\(.*\)\(-\)\(mm[0-9]\{1,\}\)/\3\2\1/ koenntest du dann aus "2.6.2-rc1-mm3" "mm3-2.6.2-rc1" machen... Die manpage von SED war nicht wirklich erleuchtend Ich hoffe, etwas hilfreicher sein zu koennen. :-) TIA -- Matthias Hentges Cologne / Germany Schoenen Gruss, Andreas -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Für die sed / RegExp Experten
* Matthias Hentges <[EMAIL PROTECTED]> [26-01-2004 11:15]: > echo "2.6.2-rc1-mm3"| sed s/\-mm[1-99]// > > bringt als Ergebnis "2.6.2-rc1". > > Ich möchte aber genau das Gegenteil erhalten, nähmlich > > "-mm3" $ echo "2.6.2-rc1-mm3"| sed s#.*\-## mm3 $ echo "2.6.2-rc1-mm3"| sed s#.*\-#\-# -mm3 pgp0.pgp Description: PGP signature
Re: Für die sed / RegExp Experten
* Am Mon, 26 Jan 2004 schrieb Matthias Hentges: > Hallo Liste! > > Ich lese mittlerweile seit zwei Stunden diverse sed HowTo's aber ich bin > wohl irgendwie zu dumm. > > Folgendes Problem: > > echo "2.6.2-rc1-mm3"| sed s/\-mm[1-99]// > > bringt als Ergebnis "2.6.2-rc1". > > Ich möchte aber genau das Gegenteil erhalten, nähmlich > > "-mm3" > echo "2.6.2-rc1-mm3"| sed "s/.*\(-mm[0-9]\{1,\}\)/\1/" Gruß Christoph -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Für die sed / RegExp Experten
Hallo Liste! Ich lese mittlerweile seit zwei Stunden diverse sed HowTo's aber ich bin wohl irgendwie zu dumm. Folgendes Problem: echo "2.6.2-rc1-mm3"| sed s/\-mm[1-99]// bringt als Ergebnis "2.6.2-rc1". Ich möchte aber genau das Gegenteil erhalten, nähmlich "-mm3" Also quasi eine invertierte RegExp, wobei aber nur der "-mm[1-99] Teil des Strings bekannt ist. Könnte mir da jemand auf die Sprünge helfen? Möglichst mit Erklärung :) Ein Schubs in die richtige Richtung wäre schon genug. Die manpage von SED war nicht wirklich erleuchtend TIA -- Matthias Hentges Cologne / Germany [www.hentges.net] -> PGP welcome, HTML tolerated ICQ: 97 26 97 4 -> No files, no URL's My OS: Debian Woody. Geek by Nature, Linux by Choice -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Regexp filter in Evolution (vielleicht etwas OT?)
On Tue, 2003-10-21 at 14:10, Reinhold Plew wrote: > Hab mich wahrscheinlich nicht genau genug ausgedrückt, sorry. > > Ich bezog mich auf > > ---snip--- > Wenn ich "If any criteria are met" mit den oben angeführten > Bedingungen verwende, landen _alle_ debian-user-german Mails in XFree. > ---snap--- > > weil ich denke, dass, wenn Du "If any criteria are met" verwendest, > gleich die erste Regel greift und die zweite gar nicht mehr erreicht > wird. Von daher meine Frage. Ja, das ist klar. Davon gehe ich auch aus. Greift die erste, bricht er ab und führt seine Aufgaben aus. Greift die erste nicht, prüft er die zweite etc. > Ich würde mal vermuten, das Du Part="sexp" bzw. den Valueblock > daraus irgendwie in Part="mlist" einbauen müsstest, dann sollte Dein > Kriterium (s.o.) auch greifen. > Ich will ja gar nicht auf xml-ebene rumpfuschen, denn ich denke nicht, dass ich damit weit komme. Der Filter-Code von Evolution wertet den xml-Kram ja nur aus. Ich denke, es ist eine Beschränkung in den Fähigkeiten von Evo. Einen Filter wie ich ihn will kann ich einfach nicht bauen, ich bräuchte eine regexp die das Kriterium 2) ersetzt, damit dieses die ODER-Verknüpfung beachtet. Ich habe mich auf der evolution-liste eingetragen. Wenn ich da eine brauchbare Lösung auftreiben kann, poste ich sie hier. Danke auf jeden Fall erstmal fürs "Mitdenken". Gruß Lars > > -- Lars Weissflog | [EMAIL PROTECTED] dot DE Registered Linux User # 329826 -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Regexp filter in Evolution (vielleicht etwas OT?)
Hallo Lars, Lars Weissflog schrieb: Hi Reinhold, On Mon, 2003-10-20 at 23:05, Reinhold Plew wrote: Hallo Lars, habe zwar noch nicht viel mit xml gemacht, aber... Hat ja auch primär nix mit xml zu tun. Einbetten tut Evolution die Filter halt in xml, die regexp die ich probiert habe landen alle in dem ~/evolution/filters.xml. Lars Weissflog schrieb: Das war mein Kriterium, das ich gern bauen würde, wobei die Schlagwörter unter 2) logisch durch ODER (nicht-exklusiv) verbunden werden sollen. If ALL CRITERIA ARE MET: CRITERIA: 1) LIST IS: debian-user-german 2) SUBJECT CONTAINS: xserver xfree xf86config xconfig x-server ACTIONS: 1) MOVE MESSAGE TO FOLDER Inbox/linux-lists/deb-u-ger/XFree 2) STOP processing this message [...] was passiert, wenn Du eine Nachricht bekommst, welche 1. nicht von debian-user-german kommt und 2. im Subject xserver xfree xf86config xconfig x-server enthält ? Was soll dann passieren? Der oben genannte Filter soll nicht ansprechen, weil die Nachricht ja nicht zu unserer Liste gehört. Würde er auch nicht, da ALL CRITERIA ARE MET nicht gilt (false, da 1) nicht erfüllt). Die Nachricht würde dann in der Inbox bleiben, wo ich mich ihrer annehmen würde. Wäre sie von einer anderen Liste, für die ähnliche Filter existieren, würde einer von denen greifen und sie in den entsprechenden Ordner packen. Hab mich wahrscheinlich nicht genau genug ausgedrückt, sorry. Ich bezog mich auf ---snip--- Wenn ich "If any criteria are met" mit den oben angeführten Bedingungen verwende, landen _alle_ debian-user-german Mails in XFree. ---snap--- weil ich denke, dass, wenn Du "If any criteria are met" verwendest, gleich die erste Regel greift und die zweite gar nicht mehr erreicht wird. Von daher meine Frage. Ich würde mal vermuten, das Du Part="sexp" bzw. den Valueblock daraus irgendwie in Part="mlist" einbauen müsstest, dann sollte Dein Kriterium (s.o.) auch greifen. Gruss Reinhold Gruß Lars Gruss Reinhold Hüllfööh! Gruß Lars -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Regexp filter in Evolution (vielleicht etwas OT?)
Hi Reinhold, On Mon, 2003-10-20 at 23:05, Reinhold Plew wrote: > Hallo Lars, > > habe zwar noch nicht viel mit xml gemacht, aber... Hat ja auch primär nix mit xml zu tun. Einbetten tut Evolution die Filter halt in xml, die regexp die ich probiert habe landen alle in dem ~/evolution/filters.xml. > Lars Weissflog schrieb: Das war mein Kriterium, das ich gern bauen würde, wobei die Schlagwörter unter 2) logisch durch ODER (nicht-exklusiv) verbunden werden sollen. > > If ALL CRITERIA ARE MET: > > CRITERIA: > >1) LIST IS: debian-user-german > >2) SUBJECT CONTAINS: xserver xfree xf86config xconfig x-server > > ACTIONS: > >1) MOVE MESSAGE TO FOLDER Inbox/linux-lists/deb-u-ger/XFree > >2) STOP processing this message > > > [...] > > was passiert, wenn Du eine Nachricht bekommst, welche > 1. nicht von debian-user-german kommt und > 2. im Subject xserver xfree xf86config xconfig x-server enthält > ? > Was soll dann passieren? Der oben genannte Filter soll nicht ansprechen, weil die Nachricht ja nicht zu unserer Liste gehört. Würde er auch nicht, da ALL CRITERIA ARE MET nicht gilt (false, da 1) nicht erfüllt). Die Nachricht würde dann in der Inbox bleiben, wo ich mich ihrer annehmen würde. Wäre sie von einer anderen Liste, für die ähnliche Filter existieren, würde einer von denen greifen und sie in den entsprechenden Ordner packen. Gruß Lars > Gruss > Reinhold > > > Hüllfööh! > > > > Gruß > > Lars > > > > -- LarsWeissflog [EMAIL PROTECTED] dot DE -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Regexp filter in Evolution (vielleicht etwas OT?)
Hi Hans-Georg, das mit den vFoldern ist 'ne Idee. Dann könnte ich sie erst mit einem Filter nach Mailing-Listen sortieren und dann vFolder für die subjects erstellen, die jeweils nur auf einen bestimmten "Liste-Ordner" zugreifen. Allerdings hat das den Nachteil, dass der "echte" Folder so groß wird, dass das schöne "dedupe"-Script das ich mühsam ergoogelt habe nicht mehr funktioniert. Das greift auf formail zurück, und das scheint etwas gegen mbox-files mit mehr als 100MB zu haben. Daher wollte ich schöne Häppchen machen, die formail verdauen kann. Naja, ich suche mal weiter nach dem regex-Kram. Vielleicht muss ich doch mal die evo-liste befragen. Leider gibt es bei Ximian keine Suchfunktion für die Archive und google liefert auch nichts für die, weil google die gar nicht indiziert hat (AFAIK). Wenn ich eine Lösung habe, poste ich sie hier. Gruß Lars On Mon, 2003-10-20 at 23:30, Hans-Georg Bork wrote: > Moin, > > On Mon, 2003-10-20 at 20:55, Lars Weissflog wrote: > > Hi zusammen, > > > > nachdem ich den halben Tag google gequält habe, frage ich erst mal euch > > auf deutsch, bevor ich auf die ximian-listen aufspringe. > > > > Ich würde gern meine Filter in Evolution (1.4) aufbohren. Von hause aus > > kennt Evo nur "if all criteria are met" oder "if any criteria are met". > > hast Du schon mal mit vFoldern "gespielt"? Die lassen sich etwas besser > konfigurieren ... > > Gruss > -- hgb -- LarsWeissflog [EMAIL PROTECTED] dot DE -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Regexp filter in Evolution (vielleicht etwas OT?)
Sorry, habe die noch mal gesendet, weil die erste zusammen mit den Antworten durch meine Filter sonstwo gelandet sind und ich dachte, sie wäre nicht auf der Liste angekommen. Diese hier bitte ignorieren. Sorry Lars On Tue, 2003-10-21 at 12:47, Lars Weissflog wrote: > Hi zusammen, > > nachdem ich den halben Tag google gequält habe, frage ich erst mal euch > auf deutsch, bevor ich auf die ximian-listen aufspringe. > > Ich würde gern meine Filter in Evolution (1.4) aufbohren. Von hause aus > kennt Evo nur "if all criteria are met" oder "if any criteria are met". > > Nun bauen sich meine Filter - da ich einige Listen abonniert habe - so > auf, das ich zunächst nach der Liste filtere und dann nach bestimmten > Schlüsselwörtern im subject. Für unsere Liste schaue ich also erstmal ob > die mail von debian-user-german kommt, und dann z.B. ob es sich um > XServer ODER xfree ODER xf86config ODER xconfig handelt (nur so als > Beispiel). Nun war mir so, als ob Evo die Wörter im Feld "subject > contains" case-insensitive behandelt und durch ODER verknüpft. Damit > müsste ein Filter in der Art (verbalisiert, unten steht der xml-code): > > If ALL CRITERIA ARE MET: > CRITERIA: >1) LIST IS: debian-user-german >2) SUBJECT CONTAINS: xserver xfree xf86config xconfig x-server > ACTIONS: >1) MOVE MESSAGE TO FOLDER Inbox/linux-lists/deb-u-ger/XFree >2) STOP processing this message > > jede Nachricht unserer Liste in den angegebenen Ordner schubsen, wenn im > topic eines der gegebenen Wörter vorkommt. Das funktioniert aber nicht. > Wenn ich "If any criteria are met" mit den oben angeführten Bedingungen > verwende, landen _alle_ debian-user-german Mails in XFree. Lasse ich die > debian-user-german Bedingung weg und verwende "if any criteria are met", > dann versteht er die angegebenen Begriffe als durch ODER verbunden und > das ganze funktioniert. Leider landen dann aber unter Umständen auch > Nachrichten von anderen Listen in dem deb-u-ger/XFree Ordner, die da gar > nicht hingehören. Das ließe sich über die Reihenfolge der Filter regeln, > aber wenn mehrere Linux-Groups (wie bei mir) da sind, dann geht es immer > in einer oder der anderen Richtung schief. > > Also dachte ich, ersetze ich die "subject contains" durch eine > "Expression"-Option. Laut Hilfe zu Evo verbirgt sich dahinter nämlich > die Möglichkeit, regexs (Plural von regex?) zu verwenden. Mehr steht > dazu leider nicht in der Hilfe, der dort vorhandene Link "regex" > schmeißt mich auf die erste Seite der Evo-Doku. > Im Web habe ich hingegen - zumindest für ältere Evo-Versionen - gelesen, > dass dieses "Expressions" keine regex sondern was anderes sind. Dann > gibt es noch ein auswählbares Kriterium namens "regex" in dem > Filter-Dialog, das jedoch nirgends dokumentiert scheint. Dazu gibt es > dann ein Feld header oder body und die Möglichkeit eine regex > einzugeben. > > Kann mir jemand sagen, wie ich in Evolution regex verwende und wie die > Syntax dafür lautet? Mit folgendem Eintrag erhalte ich 'nen Fehler bei > der Filter-Anwendung, ich denke mal, weil "expressions" eben keine > regexp sind oder die regexp-syntax in Evo eine andere ist als in grep, > egrep, sed etc. > > > deb-u-ger: +xfree > > > > > [EMAIL PROTECTED] > > > > > \(xfree\)|\(xserver\) > > > > > > > uri="file:///home/moi/evolution/local/Inbox/subfolders/Linux-Lists/subfolders/deb-u-ger/subfolders/xfree"/> > > > > > > > Verwende ich statt "expression" "regex", dann bekomme ich zwar keinen > Fehler, aber die regex \(*XServer*\) (ja, ich suche erst mal nur nach > einem Wort) wirkt auf ein Topic wie : > > Re: XServer - umstieg von CRT auf TFT via dabconf > > leider nicht. Die Nachricht bleibt wo sie ist. > > Hüllfööh! > > Gruß > Lars > > > -- > LarsWeissflog > [EMAIL PROTECTED] dot DE -- LarsWeissflog [EMAIL PROTECTED] dot DE -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Regexp filter in Evolution (vielleicht etwas OT?)
Hi zusammen, nachdem ich den halben Tag google gequält habe, frage ich erst mal euch auf deutsch, bevor ich auf die ximian-listen aufspringe. Ich würde gern meine Filter in Evolution (1.4) aufbohren. Von hause aus kennt Evo nur "if all criteria are met" oder "if any criteria are met". Nun bauen sich meine Filter - da ich einige Listen abonniert habe - so auf, das ich zunächst nach der Liste filtere und dann nach bestimmten Schlüsselwörtern im subject. Für unsere Liste schaue ich also erstmal ob die mail von debian-user-german kommt, und dann z.B. ob es sich um XServer ODER xfree ODER xf86config ODER xconfig handelt (nur so als Beispiel). Nun war mir so, als ob Evo die Wörter im Feld "subject contains" case-insensitive behandelt und durch ODER verknüpft. Damit müsste ein Filter in der Art (verbalisiert, unten steht der xml-code): If ALL CRITERIA ARE MET: CRITERIA: 1) LIST IS: debian-user-german 2) SUBJECT CONTAINS: xserver xfree xf86config xconfig x-server ACTIONS: 1) MOVE MESSAGE TO FOLDER Inbox/linux-lists/deb-u-ger/XFree 2) STOP processing this message jede Nachricht unserer Liste in den angegebenen Ordner schubsen, wenn im topic eines der gegebenen Wörter vorkommt. Das funktioniert aber nicht. Wenn ich "If any criteria are met" mit den oben angeführten Bedingungen verwende, landen _alle_ debian-user-german Mails in XFree. Lasse ich die debian-user-german Bedingung weg und verwende "if any criteria are met", dann versteht er die angegebenen Begriffe als durch ODER verbunden und das ganze funktioniert. Leider landen dann aber unter Umständen auch Nachrichten von anderen Listen in dem deb-u-ger/XFree Ordner, die da gar nicht hingehören. Das ließe sich über die Reihenfolge der Filter regeln, aber wenn mehrere Linux-Groups (wie bei mir) da sind, dann geht es immer in einer oder der anderen Richtung schief. Also dachte ich, ersetze ich die "subject contains" durch eine "Expression"-Option. Laut Hilfe zu Evo verbirgt sich dahinter nämlich die Möglichkeit, regexs (Plural von regex?) zu verwenden. Mehr steht dazu leider nicht in der Hilfe, der dort vorhandene Link "regex" schmeißt mich auf die erste Seite der Evo-Doku. Im Web habe ich hingegen - zumindest für ältere Evo-Versionen - gelesen, dass dieses "Expressions" keine regex sondern was anderes sind. Dann gibt es noch ein auswählbares Kriterium namens "regex" in dem Filter-Dialog, das jedoch nirgends dokumentiert scheint. Dazu gibt es dann ein Feld header oder body und die Möglichkeit eine regex einzugeben. Kann mir jemand sagen, wie ich in Evolution regex verwende und wie die Syntax dafür lautet? Mit folgendem Eintrag erhalte ich 'nen Fehler bei der Filter-Anwendung, ich denke mal, weil "expressions" eben keine regexp sind oder die regexp-syntax in Evo eine andere ist als in grep, egrep, sed etc. deb-u-ger: +xfree [EMAIL PROTECTED] \(xfree\)|\(xserver\) Verwende ich statt "expression" "regex", dann bekomme ich zwar keinen Fehler, aber die regex \(*XServer*\) (ja, ich suche erst mal nur nach einem Wort) wirkt auf ein Topic wie : Re: XServer - umstieg von CRT auf TFT via dabconf leider nicht. Die Nachricht bleibt wo sie ist. Hüllfööh! Gruß Lars -- LarsWeissflog [EMAIL PROTECTED] dot DE -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Regexp filter in Evolution (vielleicht etwas OT?)
Moin, On Mon, 2003-10-20 at 20:55, Lars Weissflog wrote: > Hi zusammen, > > nachdem ich den halben Tag google gequält habe, frage ich erst mal euch > auf deutsch, bevor ich auf die ximian-listen aufspringe. > > Ich würde gern meine Filter in Evolution (1.4) aufbohren. Von hause aus > kennt Evo nur "if all criteria are met" oder "if any criteria are met". hast Du schon mal mit vFoldern "gespielt"? Die lassen sich etwas besser konfigurieren ... Gruss -- hgb -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Regexp filter in Evolution (vielleicht etwas OT?)
Hallo Lars, habe zwar noch nicht viel mit xml gemacht, aber... Lars Weissflog schrieb: Hi zusammen, nachdem ich den halben Tag google gequält habe, frage ich erst mal euch auf deutsch, bevor ich auf die ximian-listen aufspringe. Ich würde gern meine Filter in Evolution (1.4) aufbohren. Von hause aus kennt Evo nur "if all criteria are met" oder "if any criteria are met". [...] If ALL CRITERIA ARE MET: CRITERIA: 1) LIST IS: debian-user-german 2) SUBJECT CONTAINS: xserver xfree xf86config xconfig x-server ACTIONS: 1) MOVE MESSAGE TO FOLDER Inbox/linux-lists/deb-u-ger/XFree 2) STOP processing this message [...] deb-u-ger: +xfree [EMAIL PROTECTED] \(xfree\)|\(xserver\) [...] was passiert, wenn Du eine Nachricht bekommst, welche 1. nicht von debian-user-german kommt und 2. im Subject xserver xfree xf86config xconfig x-server enthält ? Gruss Reinhold Hüllfööh! Gruß Lars -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Regexp filter in Evolution (vielleicht etwas OT?)
Hi zusammen, nachdem ich den halben Tag google gequält habe, frage ich erst mal euch auf deutsch, bevor ich auf die ximian-listen aufspringe. Ich würde gern meine Filter in Evolution (1.4) aufbohren. Von hause aus kennt Evo nur "if all criteria are met" oder "if any criteria are met". Nun bauen sich meine Filter - da ich einige Listen abonniert habe - so auf, das ich zunächst nach der Liste filtere und dann nach bestimmten Schlüsselwörtern im subject. Für unsere Liste schaue ich also erstmal ob die mail von debian-user-german kommt, und dann z.B. ob es sich um XServer ODER xfree ODER xf86config ODER xconfig handelt (nur so als Beispiel). Nun war mir so, als ob Evo die Wörter im Feld "subject contains" case-insensitive behandelt und durch ODER verknüpft. Damit müsste ein Filter in der Art (verbalisiert, unten steht der xml-code): If ALL CRITERIA ARE MET: CRITERIA: 1) LIST IS: debian-user-german 2) SUBJECT CONTAINS: xserver xfree xf86config xconfig x-server ACTIONS: 1) MOVE MESSAGE TO FOLDER Inbox/linux-lists/deb-u-ger/XFree 2) STOP processing this message jede Nachricht unserer Liste in den angegebenen Ordner schubsen, wenn im topic eines der gegebenen Wörter vorkommt. Das funktioniert aber nicht. Wenn ich "If any criteria are met" mit den oben angeführten Bedingungen verwende, landen _alle_ debian-user-german Mails in XFree. Lasse ich die debian-user-german Bedingung weg und verwende "if any criteria are met", dann versteht er die angegebenen Begriffe als durch ODER verbunden und das ganze funktioniert. Leider landen dann aber unter Umständen auch Nachrichten von anderen Listen in dem deb-u-ger/XFree Ordner, die da gar nicht hingehören. Das ließe sich über die Reihenfolge der Filter regeln, aber wenn mehrere Linux-Groups (wie bei mir) da sind, dann geht es immer in einer oder der anderen Richtung schief. Also dachte ich, ersetze ich die "subject contains" durch eine "Expression"-Option. Laut Hilfe zu Evo verbirgt sich dahinter nämlich die Möglichkeit, regexs (Plural von regex?) zu verwenden. Mehr steht dazu leider nicht in der Hilfe, der dort vorhandene Link "regex" schmeißt mich auf die erste Seite der Evo-Doku. Im Web habe ich hingegen - zumindest für ältere Evo-Versionen - gelesen, dass dieses "Expressions" keine regex sondern was anderes sind. Dann gibt es noch ein auswählbares Kriterium namens "regex" in dem Filter-Dialog, das jedoch nirgends dokumentiert scheint. Dazu gibt es dann ein Feld header oder body und die Möglichkeit eine regex einzugeben. Kann mir jemand sagen, wie ich in Evolution regex verwende und wie die Syntax dafür lautet? Mit folgendem Eintrag erhalte ich 'nen Fehler bei der Filter-Anwendung, ich denke mal, weil "expressions" eben keine regexp sind oder die regexp-syntax in Evo eine andere ist als in grep, egrep, sed etc. deb-u-ger: +xfree [EMAIL PROTECTED] \(xfree\)|\(xserver\) Verwende ich statt "expression" "regex", dann bekomme ich zwar keinen Fehler, aber die regex \(*XServer*\) (ja, ich suche erst mal nur nach einem Wort) wirkt auf ein Topic wie : Re: XServer - umstieg von CRT auf TFT via dabconf leider nicht. Die Nachricht bleibt wo sie ist. Hüllfööh! Gruß Lars -- LarsWeissflog [EMAIL PROTECTED] dot DE -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: regexp
Am Freitag Juni 6 2003 12:56 schrieb Christoph Maurer: > * Am Fre, 06 Jun 2003 schrieb Roland Kruggel: > > hallo, > > > > ich brauche man eure Hilfe. > > ich suche für meinen Spamfilter einen/zwei regexp die ich > > nicht zusammen bekomme. > > Für was denn? Procmail, Perl? Filter in Postfix. cu -- Roland Kruggel mailto: [EMAIL PROTECTED] System: AMD 1200Mhz, Debian woody, 2.4.20, KDE 3.1 -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: regexp
Am Freitag Juni 6 2003 12:59 schrieb Michael Tuschik: > Hi, > > On Fri, Jun 06, 2003 at 12:28:58PM +0200, Roland Kruggel wrote: > > [...] > > 1. Um einen email-namen mit mehr als 12 Buchstaben oder > > Zahlen ohne Punkt oder Strich/Unterstrich zu filtern. > > z.b. [EMAIL PROTECTED] > > ^^ > > [EMAIL PROTECTED] soll nicht gefilter werden. > > "[a-zA-Z]{12,[EMAIL PROTECTED]" Danke Allen. Hat funktioniert. cu -- Roland Kruggel mailto: [EMAIL PROTECTED] System: AMD 1200Mhz, Debian woody, 2.4.20, KDE 3.1 -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: regexp
On Fri, Jun 06, 2003 at 12:28:58PM +0200, Roland Kruggel <[EMAIL PROTECTED]> wrote: Hej, > 1. Um einen email-namen mit mehr als 12 Buchstaben oder Zahlen > ohne Punkt oder Strich/Unterstrich zu filtern. > z.b. [EMAIL PROTECTED] [EMAIL PROTECTED]:~$ echo "[EMAIL PROTECTED]" | \ grep -E '^[a-zA-Z]{10,[EMAIL PROTECTED]' [EMAIL PROTECTED] > 2. Um im text worte ohne mit mehr als 15 Buchstaben und/oder > Zahlen zu filtern. Modifiziere dazu einfach obige regex. hth, Daniel -- (___) Daniel K. Gebhart «http://dkg.con-fuse.org/» | «dkg_at_con-fuse.org» ( oo Key fingerprint = 10A6 A760 2635 6184 981A B19E 03AC D8F6 F412 9574 \_ | \O "Have you mooed today?"... pgp0.pgp Description: PGP signature
Re: regexp
* Am Fre, 06 Jun 2003 schrieb Roland Kruggel: > hallo, > > ich brauche man eure Hilfe. > ich suche für meinen Spamfilter einen/zwei regexp die ich nicht > zusammen bekomme. Für was denn? Procmail, Perl? > > 1. Um einen email-namen mit mehr als 12 Buchstaben oder Zahlen > ohne Punkt oder Strich/Unterstrich zu filtern. > z.b. [EMAIL PROTECTED] > ^^ > [EMAIL PROTECTED] soll nicht gefilter werden. Evtl. so in der Art \ [^\.]*[a-zA-Z0-9]{13,}@ > > 2. Um im text worte ohne mit mehr als 15 Buchstaben und/oder > Zahlen zu filtern. > z.B. > jemandhateineLivecam-BotschaftinunseremSystemfürSiehinterlegt. > BitteschauenSieinunserenChatundrufenSiediesedortab. > Video-Botschaftenwerdengenerell48Stundengespeichert. \ [a-zA-Z0-9äöüÄÖÜ]{15, } In Perl könntest Du mit den entsprechenden Character Classes und Word Boundaries arbeiten (siehe man perlre) Gruß Christoph -- Christoph Maurer - http://www.christophmaurer.de mailto:[EMAIL PROTECTED] - Tux# 194235 -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: regexp
Hi, On Fri, Jun 06, 2003 at 12:28:58PM +0200, Roland Kruggel wrote: > [...] > 1. Um einen email-namen mit mehr als 12 Buchstaben oder Zahlen > ohne Punkt oder Strich/Unterstrich zu filtern. > z.b. [EMAIL PROTECTED] > ^^ > [EMAIL PROTECTED] soll nicht gefilter werden. "[a-zA-Z]{12,[EMAIL PROTECTED]" > 2. Um im text worte ohne mit mehr als 15 Buchstaben und/oder > Zahlen zu filtern. > z.B. > jemandhateineLivecam-BotschaftinunseremSystemfürSiehinterlegt. > BitteschauenSieinunserenChatundrufenSiediesedortab. > Video-Botschaftenwerdengenerell48Stundengespeichert. "[a-zA-Z0-9]{15,}" Das ist glaub ich extended regexp. Hängt von deinem SpamFilter ab. Gruß Micha -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)
regexp
hallo, ich brauche man eure Hilfe. ich suche für meinen Spamfilter einen/zwei regexp die ich nicht zusammen bekomme. 1. Um einen email-namen mit mehr als 12 Buchstaben oder Zahlen ohne Punkt oder Strich/Unterstrich zu filtern. z.b. [EMAIL PROTECTED] ^^ [EMAIL PROTECTED] soll nicht gefilter werden. 2. Um im text worte ohne mit mehr als 15 Buchstaben und/oder Zahlen zu filtern. z.B. jemandhateineLivecam-BotschaftinunseremSystemfürSiehinterlegt. BitteschauenSieinunserenChatundrufenSiediesedortab. Video-Botschaftenwerdengenerell48Stundengespeichert. Diese art von Spam kommt in letzter zeit immer mehr. Danke im Vorraus. cu -- Roland Kruggel mailto: [EMAIL PROTECTED] System: AMD 1200Mhz, Debian woody, 2.4.20, KDE 3.1 -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)