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

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

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

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

Два grep успешно находят все файлы, которые я хотел изменить, но 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

Связанный контент