Ho risposto a questa domanda su SuperUser che era qualcosa correlato al tipo di espressioni regolari utilizzate durante il grepping di un output.
La risposta che ho dato è stata questa:
tail -f log | grep "some_string.*some_string"
E poi, in tre commenti alla mia risposta, @Bob ha scritto questo:
.*
è avido e potrebbe catturare più di quanto desideri..*?
di solito è meglio.
Poi questo,
il
?
è un modificatore su*
, rendendolo pigro al posto del default avidi. Supponendo PCRE.
Ho cercato su Google PCRE
, ma non sono riuscito a capire qual è il significato di questo nella mia risposta?
e infine questo,
Vorrei anche sottolineare che si tratta di regex (grep che fa regex POSIX di default), non di shell glob.
So solo cos'è un Regex e un suo utilizzo molto semplice nel comando grep. Quindi, non sono riuscito a ottenere nessuno di quei 3 commenti e ho in mente queste domande:
- Quali sono le differenze nell'uso di
.*?
vs..*
? - Quale è meglio e in quali circostanze? Si prega di fornire esempi.
Inoltre sarebbe utile capire i commenti, se qualcuno potesse
AGGIORNAMENTO: Come risposta alla domanda In cosa differiscono Regex dai Shell Globs? @Kusalananda ha fornito questo link nel suo commento.
NOTA: se necessario, leggere la mia risposta a questa domanda prima di rispondere per fare riferimento al contesto.
.*
vs. .*?
La domanda "differenza tra espressioni regolari e globs di shell" è già stata affrontata su questo sito.