Я новичок в grep, а во время процесса рефакторинга над C и C++ файлами, с которыми связана проблема замены системы, включает #include <>
с локальным включением #include ""
.
Есть ли способ сделать это с помощью grep с любым инструментом замены, скажем, для любого файла C или C++ в данном каталоге и подкаталогах?
Вот решение, использующее sed
:
cat file.cpp | sed -re 's/#include\s*<([^>]+)>/#include "\1"/g' > fixed_file.cpp
Вы можете сделать это в perl:
perl -p -i.bak -e "s/<(.*)>/\"\1\"/g" abc.h
Или, может быть, безопаснее:
perl -p -i.bak -e "s/#include <(.*)>/#include \"\1\"/g" abc.h
grep
- это просто инструмент поиска по шаблону . Он не может заменить контент.