Quiero hacer coincidir patrones no codiciosos (expresiones regulares) awk. Aquí hay un ejemplo:
echo "@article{gjn, Author = {Grzegorz J. Nalepa}, " | awk '{ sub(/@.*,/,""); print }'
¿Es posible escribir una expresión regular que seleccione la cadena más corta?
@article{gjn,
en lugar de esta larga cuerda ?:
@article{gjn, Author = {Grzegorz J. Nalepa},
Quiero obtener este resultado:
Author = {Grzegorz J. Nalepa},
Tengo otro ejemplo:
echo " , artículo {gjn, Autor = {Grzegorz J. Nalepa}," | awk '{sub (/ , [^,] *, /, ""); impresión }'
↑ ↑ ^^^^^
Tenga en cuenta que cambié los @caracteres a comas ( ,) en la primera posición de la cadena de entrada y la expresión regular (y también cambié .*a [^,]*). ¿Es posible escribir una expresión regular que seleccione la cadena más corta?
, Author = {Grzegorz J. Nalepa},
en lugar de la cadena más larga ?:
,article{gjn, Author = {Grzegorz J. Nalepa},
Quiero obtener este resultado:
,article{gjn
Authorseguir una coma y un espacio en blanco, seguido de un espacio en blanco seguido de=un espacio en blanco seguido{de cualquier no}seguido}, aunque esto requiere (entre otras cosas) que no pueda anidar{}dentro de la= { ... }pieza.