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
Author
nach 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.