Chcę wykonać niepochodny wzór (wyrażenie regularne) awk
. Oto przykład:
echo "@article{gjn, Author = {Grzegorz J. Nalepa}, " | awk '{ sub(/@.*,/,""); print }'
Czy można napisać wyrażenie regularne, które wybiera krótszy ciąg?
@article{gjn,
zamiast tego długiego łańcucha ?:
@article{gjn, Author = {Grzegorz J. Nalepa},
Chcę uzyskać ten wynik:
Author = {Grzegorz J. Nalepa},
Mam inny przykład:
echo ” , artykuł {gjn, Autor = {Grzegorz J. Nalepa}," | awk '{sub (/ , [^,] *, /, ""); drukuj} ↑ ↑ ^^^^^
Zauważ, że zmieniłem @
znaki na przecinek ( ,
) na pierwszej pozycji zarówno ciągu wejściowego, jak i wyrażenia regularnego (a także zmieniłem .*
na [^,]*
). Czy można napisać wyrażenie regularne, które wybiera krótszy ciąg?
, Author = {Grzegorz J. Nalepa},
zamiast dłuższego ciągu ?:
,article{gjn, Author = {Grzegorz J. Nalepa},
Chcę uzyskać ten wynik:
,article{gjn
Author
przecinka i białych znaków, a następnie białych znaków, a=
następnie białych znaków, a{
następnie dowolnych znaków, po których nie}
następuje}
, chociaż wymaga to (między innymi), że nie można zagnieździć{}
wewnątrz tej= { ... }
części.