Чтение Я хочу захватить «slide9» и поместить его в переменную. Я предполагаю, что вы хотите, чтобы значение, соответствующее вашему регулярному выражению, было only , помещенным в $new_output
? Если это так, то вы можете изменить это на:
new_output=`egrep -R -l "${images}" * | sed 's/.*\(slide[0-9]+\).*/\1/'`
Обратите внимание, что настройка output=
не требуется (если вы не используете это для чего-то другого)
Если вам нужно $output
для использования в другом месте, вместо этого используйте:
output=`grep -R -l "${images}" *`
new_output=`echo ${ouput} | sed 's/.*\(slide[0-9]+\).*/\1/'`
Команда sed /// аналогична команде perls s // и имеет эквивалент в большинстве языков.
Здесь я сопоставляю ноль или более символов .*
до и после вашего slide[0-9]+
, а затем запоминаю (обратное сопоставление) результат \( ... \)
в sed (скобки могут или не должны быть экранированы в зависимости от версии сед) Затем мы заменяем все совпадение (то есть всю строку) на \1
, которое расширяется до первого захваченного результата, в этом случае ваше slide[0-9]+
совпадение.