Ich möchte einen nicht gierigen Mustervergleich (regulärer Ausdruck) durchführen awk. Hier ist ein Beispiel:
echo "@article{gjn, Author = {Grzegorz J. Nalepa}, " | awk '{ sub(/@.*,/,""); print }'
Ist es möglich, einen regulären Ausdruck zu schreiben, der die kürzere Zeichenfolge auswählt?
@article{gjn,
anstelle dieser langen Zeichenfolge ?:
@article{gjn, Author = {Grzegorz J. Nalepa},
Ich möchte dieses Ergebnis erhalten:
Author = {Grzegorz J. Nalepa},
Ich habe ein anderes Beispiel:
echo " , article {gjn, Author = {Grzegorz J. Nalepa}," | awk '{sub (/ , [^,] *, /, ""); drucken }'
↑ ↑ ^^^^^
Beachten Sie, dass ich die @Zeichen an ,der ersten Stelle sowohl der Eingabezeichenfolge als auch des regulären Ausdrucks in Komma ( ) geändert habe (und auch in geändert .*habe [^,]*). Ist es möglich, einen regulären Ausdruck zu schreiben, der die kürzere Zeichenfolge auswählt?
, Author = {Grzegorz J. Nalepa},
anstelle der längeren Saite ?:
,article{gjn, Author = {Grzegorz J. Nalepa},
Ich möchte dieses Ergebnis erhalten:
,article{gjn
Authornach einem Komma und Leerzeichen, gefolgt von einem Leerzeichen gefolgt von=gefolgt von Leerzeichen , gefolgt von{gefolgt von einem beliebigen nicht}gefolgt}, obwohl dies (unter anderem) erfordert , dass Sie nicht verschachtelt werden können{}innerhalb des= { ... }Teils.