Комментируйте все строки, соответствующие некоторому шаблону

Мне нужно закомментировать все строки, содержащие "dlclose" для каждого файла в текущем каталоге и любых подкаталогах (рекурсивно). Это мое лучшее предположение на данный момент, учитывая то, что я смог узнать из различных руководств.

grep -lIR "dlclose" . | grep -v ".svn" | sed -i 's/.*dlclose.*/\/\/&/g'

Два greps успешно находят все файлы, которые я хочу изменить, но sed требует unterminated s command,

1 ответ

Вы пытаетесь редактировать на месте (-i вариант) STDIN,

Удалить -i вариант, это бесполезно.

Примечание:

Вы можете значительно ускорить выполнение команды, избегая второй grep, исключая в корне ненужные каталоги

Пытаться

grep -lIR --exclude-dir=.svn "dlclose" . | xargs sed -i bak 's/.*dlclose.*/\/\/&/g'  

или же

for f in $(grep -lIR --exclude-dir=.svn "dlclose" .)
do
   sed -i bak 's/.*dlclose.*/\/\/&/g' $f
done
Другие вопросы по тегам