Ich habe diese Frage in SuperUser beantwortet , die sich auf reguläre Ausdrücke bezieht, die beim Greifen einer Ausgabe verwendet werden.
Die Antwort, die ich gab, war folgende:
tail -f log | grep "some_string.*some_string"
Und dann schrieb @Bob in drei Kommentaren zu meiner Antwort Folgendes :
.*
ist gierig und könnte mehr erfassen, als Sie wollen..*?
ist normalerweise besser.
Dann das,
Das
?
ist ein Modifikator*
, der es faul macht, anstatt den gierigen Standard. Angenommen, PCRE.
Ich habe gegoogelt PCRE
, konnte aber in meiner Antwort nicht verstehen , welche Bedeutung dies hat.
und schließlich das,
Ich sollte auch darauf hinweisen, dass dies Regex ist (grep macht standardmäßig POSIX Regex), kein Shell Glob.
Ich weiß nur, was ein Regex ist und wie er im Befehl grep sehr einfach verwendet wird. Daher konnte ich keinen dieser drei Kommentare erhalten und habe folgende Fragen:
- Was sind Unterschiede in der Nutzung von
.*?
vs..*
? - Was ist besser und unter welchen Umständen? Bitte geben Sie Beispiele an.
Auch wäre es hilfreich, die Kommentare zu verstehen, wenn jemand könnte
UPDATE: Als Antwort auf die Frage Wie unterscheidet sich Regex von Shell Globs? @Kusalananda hat diesen Link in seinem Kommentar angegeben.
HINWEIS: Falls erforderlich, lesen Sie bitte meine Antwort auf diese Frage, bevor Sie antworten, um auf den Kontext zu verweisen.
.*
vs. .*?
bezieht. Die Frage "Unterschied zwischen regulären Ausdrücken und Shell-Globs" wurde bereits auf dieser Site behandelt.