AWK - заменить на подзаголовок

xpt спросил: 28 марта 2018 в 02:55 в: regex

Как использовать awk, чтобы выполнить замену с помощью совпадения?

Я пробовал:

{
fss="FieldsFunc(s string, f bool)"
fss=gensub(/([( ])(.+?) .+?([,)])/,"\\1\\2\\3","g",fss); print fss;
}

, и я ожидаю, что вывод будет be FieldsFunc(s, f), но я получил FieldsFunc(s string, f). Что я сделал не так? Thx.

1 ответ

Есть решение
revo ответил: 28 марта 2018 в 03:26

g?awk не поддерживает лени. Нечестивые квантификаторы специфичны для Perl. Вы можете изменить свое регулярное выражение на что-то более ограничительное:

fss = gensub(/(\w+) +\w+([,)])/,"\\1\\2", "g", fss);