Проблема не в том, что правая часть регулярного выражения неправильно интерпретируется, а в том, что левая часть вообще не совпадает.
Придерживание BRE , мы можем сделать эту работу с:
sed 's/type\([[:space:]]\{1,\}\)/void\1**/g'
Обратите внимание, что \s
был изменен на [[:space:]]
, а +
был заменен на стандартный синтаксис \{1,\}
, (В GNU-версиях sed
можно также использовать \+
в BRE, но это расширение, а не стандартное поведение).
Или мы можем переключиться на ERE путем добавления аргумента -r
, и в этом случае нам больше не нужны обратные слеши вокруг наших группирующих паренов, и +
гарантированно будет работать.
sed -re 's/type([[:space:]]+)/void\1**/g'