2014-09-18 5 views
0

Я новичок в grep, а во время процесса рефакторинга над файлами C и C++, которые связаны с проблемой замены системы, включает #include <> с локальным кодом: #include "".Заменить #include <> с #include ""

Есть ли способ сделать это с помощью grep с любым инструментом замены, скажем, для любого файла C или C++ в данном каталоге и подкаталогах?

+0

Нет, 'grep' является просто [инструмент поиска соответствия шаблону] (https://en.wikipedia.org/wiki/Grep). Он не может заменить контент. –

+3

Должно быть возможно с sed вместо этого. – Schoentoon

+0

@NielsKeurentjes Я знаю, что я имею в виду, используя grep для соответствия включенным шаблонам, а затем заменим использование grep-вывода. – Manu343726

ответ

1

Вот решение, использующее sed:

cat file.cpp | sed -re 's/#include\s*<([^>]+)>/#include "\1"/g' > fixed_file.cpp 
1

Вы могли бы сделать это в Perl:

perl -p -i.bak -e "s/<(.*)>/\"\1\"/g" abc.h 

Или, может быть безопаснее, как:

perl -p -i.bak -e "s/#include <(.*)>/#include \"\1\"/g" abc.h