Je veux faire correspondre un motif non gourmand (expression régulière) awk. Voici un exemple:
echo "@article{gjn, Author = {Grzegorz J. Nalepa}, " | awk '{ sub(/@.*,/,""); print }'
Est-il possible d'écrire une expression régulière qui sélectionne la chaîne la plus courte?
@article{gjn,
au lieu de cette longue chaîne?:
@article{gjn, Author = {Grzegorz J. Nalepa},
Je veux obtenir ce résultat:
Author = {Grzegorz J. Nalepa},
J'ai un autre exemple:
echo " , article {gjn, Auteur = {Grzegorz J. Nalepa}," | awk '{sub (/ , [^,] *, /, ""); impression }'
↑ ↑ ^^^^^
Notez que j'ai changé les @caractères en caractères virgule ( ,) à la première position de la chaîne d'entrée et de l'expression régulière (et également changé .*en [^,]*). Est-il possible d'écrire une expression régulière qui sélectionne la chaîne la plus courte?
, Author = {Grzegorz J. Nalepa},
au lieu de la chaîne plus longue?:
,article{gjn, Author = {Grzegorz J. Nalepa},
Je veux obtenir ce résultat:
,article{gjn
Authorsuivre une virgule et un espace, suivi d'un espace suivi par=suivi d'un espace suivi{par tout autre non}suivi}, bien que cela nécessite (entre autres) que vous ne puissiez pas imbriquer{}à l'intérieur de la= { ... }pièce.