Следуя рекомендации bash-hackers wiki , я хочу редактировать файлы, используя ed.
В частности, я хочу сделать следующее с ed вместо sed:
find . -type f -exec sed -i -e 's/a/b/g' {} \;
Я вижу, что ed не имеет значения, подобного sed -e, поэтому, насколько я знаю, каналы и перенаправления io - единственный способ работать с ним неинтерактивно.
Таким образом, использование ed из bash-скрипта для выполнения тех же действий, что и приведенная выше команда sed, будет выглядеть следующим образом:
ed file_name <<<$'g/a/s//b/g\nw'
Или
echo $'g/a/s//b/g\nw' | ed file_name
Но, насколько я знаю, невозможно задействовать каналы или перенаправления io в find -exec.
Я что-то пропустил? или единственный способ преодолеть это - использовать циклы?
for file in $(find . -type f -print); do ed $file <<<$'g/a/s//b/g\nw'; done;