Voglio fare corrispondenze di pattern non avide (espressione regolare) in awk. Ecco un esempio:
echo "@article{gjn, Author = {Grzegorz J. Nalepa}, " | awk '{ sub(/@.*,/,""); print }'
È possibile scrivere un'espressione regolare che seleziona la stringa più corta?
@article{gjn,
invece di questa lunga stringa ?:
@article{gjn, Author = {Grzegorz J. Nalepa},
Voglio ottenere questo risultato:
Author = {Grzegorz J. Nalepa},
Ho un altro esempio:
echo " , articolo {gjn, Autore = {Grzegorz J. Nalepa}," | awk '{sub (/ , [^,] *, /, ""); Stampa }'
↑ ↑ ^^^^^
Nota che ho cambiato i @caratteri in virgola ( ,) nella prima posizione sia della stringa di input che dell'espressione regolare (e anche cambiato .*in [^,]*). È possibile scrivere un'espressione regolare che seleziona la stringa più corta?
, Author = {Grzegorz J. Nalepa},
invece della stringa più lunga ?:
,article{gjn, Author = {Grzegorz J. Nalepa},
Voglio ottenere questo risultato:
,article{gjn
Authorseguire una virgola e uno spazio bianco, seguito da uno spazio bianco seguito da uno=spazio bianco{seguito da uno non}seguito da}, anche se questo richiede (tra le altre cose) che non puoi annidare{}all'interno della= { ... }parte.