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