Есть задача заменить в массиве файлов ненужный текст, следующий после специфического заголовка, нужным текстом, который записан прямо в имена файлов. То есть, выражения вида "123:(ненужный текст)" заменяем на "123:имя файла".
Если в баше сделать
for f in *
do echo 123:$f
done
, то в stdout выводятся строки
123:имя файла
, т.е. эхо умеет в такие выражения без проблем. Но если сделать
for f in *
do sed 's/123:[[:alnum:]]*/"echo 123:$f"/g' $f > 's_'$f
done
, то строка "123:(ненужный текст)" заменяется на просто имя файла, а "123:" теряется. Что я делаю не так? Долго гуглил, но что-то так и не нашел ответ. Проблема, видимо, в синтаксисе sed, я разные способы пробовал - выносил "123:" за эхо, ставил кавычки в самых разных сочетаниях, пробовал всякие скобки - все похеру вообще