staging.inyokaproject.org

grep

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion des Artikels grep.

black_tencate

Avatar von black_tencate

Anmeldungsdatum:
27. März 2007

Beiträge: 10674

Hej Berlin_1946,

Berlin_1946 schrieb:

...Was ist mit "alle Vieren" gemeint.

vielleicht
auf allen Vieren kriechst Du durch das Unterholz von Linux?
*scnr*

Im Ernst, ließes einfach im Zusammenhang mit dem Folgesatz bezügl. z.B. "." und "\"

Gruß black tencate

Berlin_1946 Team-Icon

Supporter, Wikiteam

Anmeldungsdatum:
18. September 2009

Beiträge: 7478

@ black_tencate, @ noisefloor,

Eure Antworten haben mir schon geholfen. Ich glaube es verstanden zu haben:

... also z.B. 456, PMA4Life, Hausnummer4 usw.

Die meisten Zeichen (darunter alle Buchstaben und Ziffern) passen auf sich selbst, zum Beispiel passt "4" auf alle Vieren in einer Zeichenkette, also z.B. 456, PMA4Life, Hausnummer4 usw..

Ist mein Vorschlag für das Wiki, angeregt durch das vorgenannte Zitat. Der Begriff "Zeichenkette" ist aus der Definition im Wikipedia Regulärer Ausdruck.

Ich werde es heute im laufe des Tages so abändern. Wenn jemand es überflüssig findet, kann es ja wieder gestrichen werden.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17432

Ich habe mal eine Grafik zu den Zeichenklassen gemacht (punct, ctrl, char, alnum, xdigit, ...) - wenn jmd. Interessse hätte, das einzubauen ...?

Der Quellcode ist eine Dotdatei, hier der Code:

 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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
digraph Zeichenklassen {
    # https://spline.de/static/talks/graphviz.pdf
    node [shape=box] upper; lower; alpha; digit; alnum; punct; space; cntrl; blank; print; "graph"; xdigit;
    node [shape=diamond; color=black; fillcolor="#00ffff"; style=filled;] "\\d"; "\\w"; "\\s"; "\\b" [label="\\b :=\nwordborder"];
    node [shape=oval; color=black; fillcolor="#dddddd"; style=filled;];
    alpha -> upper
    alpha -> lower
    lower -> "[a-f]"
    lower -> "[g-z]"
    upper -> "[A-F]"
    upper -> "[G-Z]"
    alnum -> alpha
    alnum -> xdigit
    alnum -> digit
    xdigit -> digit
    digit -> "[0-9]";
    "[0-9]" -> "\\d"  [headlabel="digitchar"];
    xdigit -> "[a-f]"
    xdigit -> "[A-F]"
    "graph" -> alnum
    "\\w" -> alnum
    "\\w" -> "_" [taillabel="wordchar"];
    "\\s" -> " "  [taillabel="spacechar"];
    "\\s" -> "\\t"
    "\\s" -> "\\n"
    "[!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]" -> "_"
    "graph" -> punct
    print -> "graph"
    print -> space
    blank -> " "
    blank -> "\\t"
    space -> blank
    space -> "\\n"
    space -> "\\r"
    space -> "\\v"
    space -> "\\f"
    "[0x21-0xff]" -> print
    "[0x00-0x20]" -> cntrl
    cntrl -> space
    punct -> "[!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]"
    node [shape="rect",color=black,fillcolor=lightblue] "LEGENDE:
    -> := Umfasst
    < \\x > neue Zeichenklassenkurzschreibweise,
    < \\X > Negation der Zeichenklasse < \\x > mit (kl./gr. x)
    [ Name ] Klassenname für [[:NAME:]] (neg.: [^[:NAME:]])
    ( z ) Zeichen z
    ( [abc] ) Zeichen abc
    ( [0..9] ) Zeichen 0 bis 9"
}

Mit dot/dotty/xdot kann man aus dem Code die Grafik machen. Lizenz ist CC BY-NC-SA 2.0 DE, andere Lizenzen auf Nachfrage möglich.

Bilder

noisefloor Team-Icon

Ehemaliger
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

eher nicht. Nicht, weil die Grafik nicht nützlich sein könnte, sondern eher, weil es nicht wirklich Aufgabe des Wikis ist, RegEx zu erklären. Siehe oben.

Gruß, noisefloor

tuxifreund Team-Icon

Projektleitung

Anmeldungsdatum:
7. November 2020

Beiträge: 1151

Kurzer Einwurf: Spräche denn etwas gegen einen seperaten Artikel zu Regulären Ausdrücken? Die kommen ja des Öfteren vor.

LG
tuxifreund

noisefloor Team-Icon

Ehemaliger
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

Spräche denn etwas gegen einen separaten Artikel zu Regulären Ausdrücken?

IMHO: ja, ziemlich viel. Erstens gibt es da etliche Seiten im Netz drüber, die mit Sicherheit ausgefeilter sind, als unsere Wikiseite es je sein würde, zweitens gibt es da auch ganze Bücher drüber, drittens ist das ein ausuferndes Thema. Letzteres stellt dann die Frage: wo fängt man an, wo hört man auf? Abgesehen davon gibt es verschieden Implementierung von RegEx Engines, die sich im Detail auch in Syntax und Ergebnis unterscheiden.

Was vielleicht ok wäre ist ein minimaler Artikel mit eine paar ganz flachen Beispielen und dann ein Sammlung von Links auf weiterführende Artikel, die Seite regex101 etc.

Gruß, noisefloor

tuxifreund Team-Icon

Projektleitung

Anmeldungsdatum:
7. November 2020

Beiträge: 1151

noisefloor schrieb:

IMHO: ja, ziemlich viel. Erstens gibt es da etliche Seiten im Netz drüber, die mit Sicherheit ausgefeilter sind, als unsere Wikiseite es je sein würde, zweitens gibt es da auch ganze Bücher drüber, drittens ist das ein ausuferndes Thema. Letzteres stellt dann die Frage: wo fängt man an, wo hört man auf?

Das macht sinn. ☺

LG
tuxifreund

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17432

noisefloor schrieb:

Hallo,

Spräche denn etwas gegen einen separaten Artikel zu Regulären Ausdrücken?

IMHO: ja, ziemlich viel. Erstens gibt es da etliche Seiten im Netz drüber, die mit Sicherheit ausgefeilter sind, als unsere Wikiseite es je sein würde, zweitens gibt es da auch ganze Bücher drüber, drittens ist das ein ausuferndes Thema.

Drittens gibt es mehrere konkurrierende Implementierungen, etwa bei grep und find, wo man dann den Dialekt spezifizieren soll. Gut - ohne Wiki ist das nicht unbedingt leichter herauszufinden, als mit einem oder 2, 3 Wikiartikeln (für jeden Dialekt einen, plus einen Wurzelartikel, für die Gemeinsamkeiten).

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17432

Im Abschnitt "Varianten", wo nur 3 aufgeführt waren, habe ich eine kl. Tabelle der x/xz/z/zip-Varianten ergänzt, und der Debian-Package-Varianten.

noisefloor Team-Icon

Ehemaliger
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

wie ich neulich im Rahmen einer RegEx Diskussion festgestellt habe ist Reguläre Ausdrücke eine Weiterleitung auf grep. Gut, hätte ich eigentlich wissen können, weil ich die Umleitung 2011 selber angelegt habe. Warum weiß ich nicht mehr (gibt wahrscheinlich eine Diskussion im Wikiteamforum dazu), aber IMHO würde es Sinn machen, den RegEx Teil aus grep als eigenen Artikel auszulagern. Zum einem ist an regulären Ausdrücken nichts, was nur für grep gelten würden, zum anderen könnte man dann auch noch (kurz) darauf eingehen, dass es verschiedene Implementierungen von RegEx gibt und das es zwischen den RegEx Implementierung Unterschiede geben kann. Ein guter Vergleich ist auf der Seite https://en.wikipedia.org/wiki/Comparison_of_regular_expression_engines und https://gist.github.com/CMCDragonkai/6c933f4a7d713ef712145c5eb94a1816.

Gruß, noisefloor

karzer Team-Icon

Wikiteam
Avatar von karzer

Anmeldungsdatum:
10. April 2022

Beiträge: 1129

noisefloor schrieb:

Hallo,

wie ich neulich im Rahmen einer RegEx Diskussion festgestellt habe ist Reguläre Ausdrücke eine Weiterleitung auf grep. Gut, hätte ich eigentlich wissen können, weil ich die Umleitung 2011 selber angelegt habe. Warum weiß ich nicht mehr (gibt wahrscheinlich eine Diskussion im Wikiteamforum dazu), aber IMHO würde es Sinn machen, den RegEx Teil aus grep als eigenen Artikel auszulagern. [...]

Hm, da fällt mir gleich was ein:

noisefloor schrieb:

Hallo,

Spräche denn etwas gegen einen separaten Artikel zu Regulären Ausdrücken?

IMHO: ja, ziemlich viel. Erstens gibt es da etliche Seiten im Netz drüber, die mit Sicherheit ausgefeilter sind, als unsere Wikiseite es je sein würde, zweitens gibt es da auch ganze Bücher drüber, drittens ist das ein ausuferndes Thema. Letzteres stellt dann die Frage: wo fängt man an, wo hört man auf? Abgesehen davon gibt es verschieden Implementierung von RegEx Engines, die sich im Detail auch in Syntax und Ergebnis unterscheiden.

Was vielleicht ok wäre ist ein minimaler Artikel mit eine paar ganz flachen Beispielen und dann ein Sammlung von Links auf weiterführende Artikel, die Seite regex101 etc.

Gruß, noisefloor

noisefloor Team-Icon

Ehemaliger
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

da fällt mir gleich was ein...

Habe ich in der Tat gesagt - und danach festgestellt, dass es hier im Wiki Reguläre Ausdrücke (seit 2011) gibt. Deswegen auch der Post hier.

Eine mögliche Alternative wäre dann noch, den detaillierten RegEx Teil aus grep zu löschen und die Redirect ebenfalls zu entfernen. Jedenfalls finde ich aktuell die derzeitige Konstellation ungünstig. Der Punkt von kB im Rahmen der Diskussion zu sd war im Kern ja schon valide, also das nicht jede RegEx Implementierung gleich ist. Ob das im Kontext des Wikis bzw. der Tiefe der hier verwendeten Beispiele je relevant wird ist eine andere Frage - da muss IMHO halt das Wikiteam die Richtung vorgeben. Hätte ja auch einen Einfluss auf andere Artikel.

Gruß, noisefloor

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 7816

noisefloor schrieb:

[…] im Wiki Reguläre Ausdrücke

Was das Wiki auf grep weiterleitet.

[…] Jedenfalls finde ich aktuell die derzeitige Konstellation ungünstig […] nicht jede RegEx Implementierung gleich ist.

Ich persönlich denke, das UbuntuUsers.de-Wiki verdient einen eigenen Artikel zum Thema „Reguläre Ausdrücke“ und der Artikel grep gehört um diese Thematik entlastet, indem die momentan dort erklärten "Extended Regular Extensions" (ERE) verschoben werden, weil diese auch von anderen Programmen (wie z.B. awk und sed) verwendet werden.

Ob das im Kontext des Wikis bzw. der Tiefe der hier verwendeten Beispiele je relevant wird ist eine andere Frage - da muss IMHO halt das Wikiteam die Richtung vorgeben. Hätte ja auch einen Einfluss auf andere Artikel.

Ja, sehe ich auch so. Es würde einen größeren Umbau im Wiki erfordern, den ich jedenfalls momentan nicht einmal sicher übersehe. Das muss sorgfältig geplant und moderiert werden und geht nicht per Schnellschuss. Das Thema ist umfangreich, kompliziert und komplex, u.a. weil die unterschiedlichen Arten (BRE/ERE/PCRE und weiter) sowohl unterschiedlich mächtig sind als auch für jede je nach Programm eine unterschiedliche Syntax verwendet werden könnte. Und sind Shell-Globs eine andere Art von Regulären Ausdrücken oder theoretisch etwas ganz anderes?

Möglicherweise wäre ein sinnvoller erster Schritt erst einmal eine Erstellung eines Artikels „Übersicht Reguläre Ausdrücke“ und erst, wenn dieser vorliegt, eine Aufräumaktion bei den betroffenen Artikeln.

Gruß, noisefloor

noisefloor Team-Icon

Ehemaliger
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

u.a. weil die unterschiedlichen Arten (BRE/ERE/PCRE und weiter) sowohl unterschiedlich mächtig sind als auch für jede je nach Programm eine unterschiedliche Syntax verwendet werden könnte.

Genau. Ich habe gestern Abend mal ein bisschen gelesen - und das Rabbit Hole, in das wir uns begeben würden, kann tief sein. Mal abgesehen von Implementierungsdetails und Unterschiedlichen Technik bei der Implementierung einer RegEx Engine (es gibt, wenn ich das richtig habe, drei gängige Ansätze, wie die Engine intern arbeiten kann), kann es ja auch eine Engine geben, die (absichtlich) unvollständig implementiert sind. Gängig ist wohl, sich an PCRE zu orientieren (machen z.B. AFAIK Python und JavaScript), aber es werden nicht zwingend 100% der Feature implementiert. Google (und damit z.B. auch Go) verwendet eine eigene Engine namens RE2, die aber nach meinem Verständnis primär intern anders arbeitet.

Die Unterschiede kommen wohl nach meinem Verständnis erst sehr spät, also speziellen Fällen wie z.B. ob einen Engine "look behind capture groups" unterstützt (oder nicht). Ich würde auch mal behaupten, dass kein Beispiel im Wiki so tief geht, dass es wirklich nur mit einer speziellen Engine funktioniert.

Möglicherweise wäre ein sinnvoller erster Schritt erst einmal eine Erstellung eines Artikels „Übersicht Reguläre Ausdrücke“ und erst, wenn dieser vorliegt, eine Aufräumaktion bei den betroffenen Artikeln.

+1. IMHO reicht es auch, darin daruf hinzuweisen, das es Unterschiede geben kann, dass im Artikel genannte aber (weitestgehend) allgemeingültig ist.

Gruß, noisefloor

Antworten |