Я пытаюсь заменить (с sed) группу, соответствующую регулярному выражению, но лучшее, что я могу извлечь из своих тестов, - это строка, которая заменяет всю строку в правой части sed разделитель.Замена групп регулярных выражений с помощью sed
Пример:
echo "this is a sample id='42' string" | sed -r "s/id='(.*?)'/\11/g"
Выход:
this is a sample 421 string
Желаемый выход:
this is a sample id='1' string
Возможно ли это? Как?
EDIT:
То, что я пытаюсь сделать, это на самом деле заменить только группу, совпавшие с регулярным выражением, а не всю строку на левой стороне SED сценария. Сказал (а) другими словами: Я хочу заменить только «42» на «1», не используя «id =».
Неясно, что вы имеете в виду. Можете ли вы улучшить объяснение с помощью большего количества примеров? – fedorqui
@fedorqui Сделано, см. Править – alexandernst
Ммм, тогда из моего удаленного ответа это должно сделать это -> 'echo", это пример id = '42 'string "| sed -r "s/'[^'] * '/' 5 '/" '. То есть просто проверить что-либо между одинарными кавычками. – fedorqui